数据结构二叉树综合实验报告.docxVIP

  • 12
  • 0
  • 约6.36千字
  • 约 28页
  • 2020-03-26 发布于江西
  • 举报
武 汉 工 程 大 学 计算机科学与工程学院 《数据结构》实验报告[2] 专业班级 智能 01 实验地点 机电大楼 4 楼 419 机房 学生学号 指导教师 学生姓名 实验时间 第 12 周~第 14 周 星期 2 实验项目 树性结构的综合使用 实验类别 操作性() 验证性( ) 设计性( ) 综合性( √) 其它( ) 实验目的及要求 1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。 2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为 2 的结点 个数。 成 绩 评 定 表 类 别 评 分 标 准 分值 得分 合 计 上机表现 积极出勤、遵守纪律 认真完成设计任务 30 分 报告质量 操作规范、功能正确 填写完整、体现收获 70 分 说明: 评阅教师: 日 期: 20 年 月 实 验 实 验 内 容 日 计算机科学与工程学院 一.实验内容 实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。 求二叉树的结点个数,叶子结点个数,二叉树的高度,度为 2 的结点个数。 二.程序的设计思想 1 实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。 先构造二叉树,根据先序遍历的思想,输入根后,再输入左子树,直至左子树为空则输 入上一层右字树。 二叉树的非递归遍历是用显示栈来存储二叉树的结点指针,先序遍历时,按二叉 树前序遍历的顺序访问结点,并将结点的指针入栈,直到栈顶指针指向结点的左指针域为 空时取出栈顶指针并删除栈顶指针,访问刚取出的指针指向的结点的右指针指向的结点并 将其指针入栈,如此反复执行则为非递归操作。 二叉树的递归遍历:若二叉树为空,则空操作 先序遍历: 访问根结点; 先序遍历左子树; 先序遍历右子树。 中序遍历 : 中序遍历左子树; 访问根结点; 中序遍历右子树 后序遍历: 后序遍历左子树; 后序遍历右子树; 访问根结点。 2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为 2 的结点个数。 求二叉树的叶子结点个数:先分别求得左右子树中个叶子结点的个数,再计算出 两者之和即为二叉树的叶子结点数。 二叉树的结点个数之和:先分别求得左子树右子树中结点之和,再计算两者之和 即为所求。 《数据结构》实验报告 2 二叉树 二叉树的高度:首先判断二叉树是否为空,若为空则此二叉树高度为 0,。否则, 就先分别求出左右子树的深度进行比较,取较大的树加一即为所求。 二叉树的度为 2 的结点个数:计算有左右孩子的结点个数,即为度为 2 的结点个 实 验 内 容 计算机科学与工程学院 数。 三.编程过程中遇到的问题及解决办法 后续遍历的非递归函数涉及到回溯的方法,开始设计的方案想的太过于简单,所以形 成了死循环,总是在最后的节点处不停地循环,后改成回溯后,该问题得到解决。 计算二叉树中度为 2 的结点个数中,返回循环的时候不论根结点有没有左右子树,但 个人设计时,根总是会将自己默认为有左右子树,自行增加 1.后在同学帮助下才看到自己 的这个失误。 四.程序的闪光点(自我评价) 程序模块化,各个函数分开描述,方便观察 关键处有注释 建立二叉树时,用先序提示输入,比较人性化。 五.程序源代码(以文件为单位提供) #includeiostream.h #includemalloc.h #define Maxsize 100 typedef struct TREE{ struct TREE *lTree; struct TREE *rTree; char data; }Tree; void InitTree(Tree*);//初始化树 void CreatTree(Tree*);//创建二叉树 void PreTraverse(Tree*);//先序遍历递归 void PreOrderTraverse(Tree*);//先序遍历非递归 void InTraverse(Tree *tree);//中序遍历递归 《数据结构》实验报告  3 计算机科学与工程学院 void InOrderTraverse(Tree *tree);//中序遍历非递归 void PostTraverse(Tree *tree);//后序遍历递归 void LastOrderTraverse(Tree *tree);//后序遍历非递归 int DepthTree(Tree *tree);//计算树的深度 int LeafsTree(Tree *tree);//计算叶子结点个数 int NodesTree(Tree *tree);//计算结点个数 int Twochild(Tree*tree);//计算度为二的结点个数 void main() { int H,L; Tree tree; // Tree m; InitTree(tree); Cr

文档评论(0)

1亿VIP精品文档

相关文档