实验六-二叉树实验报告(共7页).doc





《实验六-二叉树实验报告(共7页).doc》由会员分享,可在线阅读,更多相关《实验六-二叉树实验报告(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上实验四 二叉树的操作 班级:计算机1002班 姓名:唐自鸿 学号:7 完成日期:2010.6.14题目:对于给定的一二叉树,实现各种约定的遍历。一、实验目的: (1)掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法;(2)掌握二叉树的遍历算法(先序、中序、后序遍历算法)的思想,并学会遍历算法的递归实现和非递归实现。二、实验内容:构造二叉树,再实现二叉树的先序、中序、后序遍历,最后统计二叉树的深度。三、实验步骤:(一) 需求分析1. 二叉树的建立首先要建立一个二叉链表的结构体,包含根节点和左右子树。因为树的每一个左右子树又是一颗二叉树,所以用递归的方法来建立其左
2、右子树。二叉树的遍历是一种把二叉树的每一个节点访问并输出的过程,遍历时根结点与左右孩子的输出顺序构成了不同的遍历方法,这个过程需要按照不同的遍历的方法,先输出根结点还是先输出左右孩子,可以用选择语句来实现。2程序的执行命令为:1)构造结点类型,然后创建二叉树。2)根据提示,从键盘输入各个结点。3)通过选择一种方式(先序、中序或者后序)遍历。4)输出结果,结束。(二)概要设计1.二叉树的二叉链表结点存储类型定义 typedef struct Node DataType data; struct Node *LChild; struct Node *RChild;BitNode,*BitTree;
3、2.建立如下图所示二叉树:void CreatBiTree(BitTree *bt)用扩展先序遍历序列创建二叉树,如果是当前树根置为空,否则申请一个新节点。 3.本程序包含四个模块 1) 主程序模块: 2)先序遍历模块 3)中序遍历模块 4)后序遍历模块4.模块调用关系: 主程序模块 先序遍历模块中序遍历模块后序遍历模块(三)详细设计1.建立二叉树存储类型/=构造二叉树=void CreatBiTree(BitTree *bt)/用扩展先序遍历序列创建二叉树,如果是当前树根置为空,否则申请一个新节点/ char ch; ch=getchar(); if(ch=.)*bt=NULL; else
4、*bt=(BitTree)malloc(sizeof(BitNode);/申请一段关于该节点类型的存储空间 (*bt)-data=ch; /生成根结点 CreatBiTree(&(*bt)-LChild); /构造左子树 CreatBiTree(&(*bt)-RChild); /构造右子树 2. 编程实现以上二叉树的前序、中序和后序遍历操作,输出遍历序列 1)先序遍历二叉树的递归算法如下: void PreOrder(BitTree root) if (root!=NULL) Visit(root -data); PreOrder(root -LChild); /递归调用核心 PreOrder
5、(root -RChild); 2)中序遍历二叉树的递归算法如下: void InOrder(BitTree root) if (root!=NULL) InOrder(root -LChild); Visit(root -data); InOrder(root -RChild); 3)后序遍历二叉树的递归算法如下: void PostOrder(BitTree root) if(root!=NULL) PostOrder(root -LChild); PostOrder(root -RChild); Visit(root -data); 4)计算二叉树的深度算法如下: int PostTre
6、eDepth(BitTree bt) /求二叉树的深度 int hl,hr,max; if(bt!=NULL) hl=PostTreeDepth(bt-LChild); /求左子树的深度 hr=PostTreeDepth(bt-RChild); /求右子树的深度 max=hlhr?hl:hr; /得到左、右子树深度较大者 return(max+1); /返回树的深度 else return(0); /如果是空树,则返回0四、调试分析及测试结果1. 进入演示程序后的显示主界面: 请输入二叉树中的元素; 先序、中序和后序遍历分别输出结果。2.测试结果 以扩展先序遍历序列输入,其中.代表空子树:AB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 二叉 报告

限制150内