《实验五-二叉树的遍历.doc》由会员分享,可在线阅读,更多相关《实验五-二叉树的遍历.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date实验五-二叉树的遍历宁德师范学院计算机系实验目的与要求:一、目的: 掌握二叉树的存储结构和遍历(递归和非递归)二、要求: 用递归算法实现二叉树的遍历实验设备(环境):VC+6.0实验内容:1、 分析、理解程序。2、 设计输入一棵树,看程序运行结果与自己计算的遍历顺序是否一致。实验步骤、实验结果及分析:#include #include #define MAXCSIZE
2、 100 typedef int TElemType; typedef struct BitNode TElemType data; struct BitNode *lchild,*rchild; BitNode,*BitTree; /*二叉树的构建*/BitTree CreateBiTree(void) BitTree bt; TElemType x; scanf(%d,&x); if(x=-1) bt=NULL; else bt=(BitTree)malloc(sizeof(BitNode); bt-data=x; bt-lchild=CreateBiTree(); bt-rchild=C
3、reateBiTree(); return bt; /*二叉树的中序遍历*/ void InOrderTraverse(BitTree bt) if(bt!=NULL) InOrderTraverse(bt-lchild); printf(%d,bt-data); InOrderTraverse(bt-rchild); /*二叉树的后序遍历*/ void PostOrderTraverse(BitTree bt) if(bt!=NULL) PostOrderTraverse(bt-lchild); PostOrderTraverse(bt-rchild); printf(%d,bt-data)
4、; /*二叉树的先序遍历*/ void PreOrderTraverse(BitTree bt) if(bt!=NULL) printf(%d,bt-data); PreOrderTraverse(bt-lchild); PreOrderTraverse(bt-rchild); int main() BitTree bt; bt=CreateBiTree(); printf(n中序遍历); InOrderTraverse(bt); printf(n后序遍历); PostOrderTraverse(bt); printf(n先序遍历); PreOrderTraverse(bt); printf(
5、n); 实验结果:图 1二叉树图 2实验输出二叉树实验总结(包括过程总结、心得体会及实验改进意见等):这次实验主要是读懂代码所要求输入的东西,懂得怎么输入运行使得计算机看懂人工输入的二叉树,通过先序遍历建立二叉树,和二叉树的先序、中序、后续遍历算法。在做实验之前,要充分的理解本次实验的理论依据,这样才能达到事半功倍的效果。不要在没有真正理解实验原理之前盲目的开始实验,例如进行二叉树的遍历的时候,要先理解各种遍历的特点。先序遍历是先遍历根节点,再依次先序遍历左右子树。中序遍历是先中序遍历左子树,再访问根节点,最后中序遍历右子树。而后序遍历则是先依次后续遍历左右子树,再访问根节点。在实验中我掌握二叉树基本操作的实现方法,并且根据二叉树的抽象数据类型的定义,使用二叉链表实现一个二叉树。 指导教师评语:成绩评定 教师签字 年 月 日备注:注:1、报告内的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日内-
限制150内