实验五-二叉树的遍历.doc
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<stdio.h> #include<stdlib.h> #define MAXCSIZE 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=CreateBiTree(); 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); /*二叉树的先序遍历*/ 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("n"); 实验结果:图 1二叉树图 2实验输出二叉树实验总结(包括过程总结、心得体会及实验改进意见等):这次实验主要是读懂代码所要求输入的东西,懂得怎么输入运行使得计算机看懂人工输入的二叉树,通过先序遍历建立二叉树,和二叉树的先序、中序、后续遍历算法。在做实验之前,要充分的理解本次实验的理论依据,这样才能达到事半功倍的效果。不要在没有真正理解实验原理之前盲目的开始实验,例如进行二叉树的遍历的时候,要先理解各种遍历的特点。先序遍历是先遍历根节点,再依次先序遍历左右子树。中序遍历是先中序遍历左子树,再访问根节点,最后中序遍历右子树。而后序遍历则是先依次后续遍历左右子树,再访问根节点。在实验中我掌握二叉树基本操作的实现方法,并且根据二叉树的抽象数据类型的定义,使用二叉链表实现一个二叉树。 指导教师评语:成绩评定 教师签字 年 月 日备注:注:1、报告内的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日内-