大数据结构二叉树地递归算法实验报告材料.doc

大数据结构二叉树地递归算法实验报告材料.doc

ID:56523696

大小:83.00 KB

页数:13页

时间:2020-06-27

大数据结构二叉树地递归算法实验报告材料.doc_第1页
大数据结构二叉树地递归算法实验报告材料.doc_第2页
大数据结构二叉树地递归算法实验报告材料.doc_第3页
大数据结构二叉树地递归算法实验报告材料.doc_第4页
大数据结构二叉树地递归算法实验报告材料.doc_第5页
资源描述:

《大数据结构二叉树地递归算法实验报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、齐鲁工业大学实验报告成绩课程名称数据结构指导教师单健芳实验日期院(系)信息学院专业班级计科(嵌入)14-1实验地点学生高晨悦学号7同组人无实验项目名称二叉树的递归算法一、实验目的和要求1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。二、实验环境微型计算机vc6.0三、实验容1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。四、实验步骤一.实验容1.实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。

2、2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。二.程序的设计思想1实现二叉树的先序,中序与后序遍历的递归算法与非递归算法。先构造二叉树,根据先序遍历的思想,输入根后,再输入左子树,直至左子树为空则输入上一层右字树。(1)二叉树的非递归遍历是用显示栈来存储二叉树的结点指针,先序遍历时,按二叉树前序遍历的顺序访问结点,并将结点的指针入栈,直到栈顶指针指向结点的左指针域为空时取出栈顶指针并删除栈顶指针,访问刚取出的指针指向的结点的右指针指向的结点并将其指针入栈,如此反复执行则为非递归操作。(2)二叉树的递归遍历:若二叉树为空,则空操作先序遍历:

3、(a)访问根结点;(b)先序遍历左子树;(c)先序遍历右子树。中序遍历:(a)中序遍历左子树;(b)访问根结点;(c)中序遍历右子树后序遍历:(a)后序遍历左子树;(b)后序遍历右子树;(c)访问根结点。2.求二叉树的结点个数,叶子结点个数,二叉树的高度,度为2的结点个数。(1)求二叉树的叶子结点个数:先分别求得左右子树中个叶子结点的个数,再计算出两者之和即为二叉树的叶子结点数。(2)二叉树的结点个数之和:先分别求得左子树右子树中结点之和,再计算两者之和即为所求。(3)二叉树的高度:首先判断二叉树是否为空,若为空则此二叉树高度为0,。否则,就先分别求出左右子树的

4、深度进行比较,取较大的树加一即为所求。(4)二叉树的度为2的结点个数:计算有左右孩子的结点个数,即为度为2的结点个数。三.编程过程中遇到的问题及解决办法(1)后续遍历的非递归函数涉及到回溯的方法,开始设计的方案想的太过于简单,所以形成了死循环,总是在最后的节点处不停地循环,后改成回溯后,该问题得到解决。(2)计算二叉树中度为2的结点个数中,返回循环的时候不论根结点有没有左右子树,但个人设计时,根总是会将自己默认为有左右子树,自行增加1.后在同学帮助下才看到自己的这个失误。四.程序的闪光点(自我评价)1.程序模块化,各个函数分开描述,方便观察2.关键处有注释3.建

5、立二叉树时,用先序提示输入,比较人性化。五.程序源代码(以文件为单位提供)#include#include#defineMaxsize100typedefstructTREE{structTREE*lTree;structTREE*rTree;chardata;}Tree;voidInitTree(Tree*);//初始化树voidCreatTree(Tree*);//创建二叉树voidPreTraverse(Tree*);//先序遍历递归voidPreOrderTraverse(Tree*);//先序遍历非递归voi

6、dInTraverse(Tree*tree);//中序遍历递归voidInOrderTraverse(Tree*tree);//中序遍历非递归voidPostTraverse(Tree*tree);//后序遍历递归voidLastOrderTraverse(Tree*tree);//后序遍历非递归intDepthTree(Tree*tree);//计算树的深度intLeafsTree(Tree*tree);//计算叶子结点个数intNodesTree(Tree*tree);//计算结点个数intTwochild(Tree*tree);//计算度为二的结点个数vo

7、idmain(){intH,L;Treetree;//Treem;InitTree(&tree);CreatTree(&tree);cout<<"先序遍历递归为:";PreTraverse(&tree);//先序遍历递归cout<<"先序遍历非递归:";PreOrderTraverse(&tree);//先序遍历非递归cout<

8、历递归为:";PostT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。