资源描述:
《二叉树的应用实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验三课程名称:数据结构姓名:张燕实验名称:二叉树的应用班级:嵌入式2班学号:1010431072实验序号:完成日期:11.21指导教师:王群芳实验成绩:一、实验目的及要求掌握二叉树的动态存储结构--二叉链表,掌握二叉树的三种遍历方法,会运用三种遍历的方法求解有关问题。二、实验环境硬件:计算机软件:MicrosoftVisualC++三、实验内容1.以二叉链表作存储结构,建立一棵二叉树;2.输出其先序、中序、后序遍历序列;3.统计其叶子结点数;4.求出它的高度;5.用嵌套形式输出。四、调试过程及实验结果•C:UserslenovoDesktopDebug3a.exe"请输
2、入二叉树先序列Fb斛cd#啊阮疫为:abed一中序为:badc后序为:bdca怪度dep=3二叉關的曙套括号形式为:a>Pressanykeytocontinue五、总结通过这次实验运用了很多关于链表的知识,这次程序中的函数,绝大部分都是书上的内容,我们要做的只是组织一下结构,但一开始写好后还是有很多错误,但是经过我和室友的不懈努力,终于搞定了。只是还是不太熟练编程六、附录(源程序清单)#include#include#include#defineNULL0typedefinttelemtype;typedef
3、intstatus;typedefstructbitnodefchardata;structbitnode*lchild,*rchild;}bitnode,*bitree;voidcreate(bitree&T){charch;ch=getchar();if(ch==#)T=NULL;else{T=(bitree)malloc(sizeof(bitnode));T->data=ch;create(T->lchild);create(T->rchild);}}voidpreorder(bitreeT){if(T){printf(M%cu,T->data);preorder(T->lc
4、hild);preorder(T->rchild);}}voidinorder(bitreeT){if(T){inorder(T->lchild);printf(M%cu,T->data);inorder(T->rchild);}}voidpostorder(bitreeT){if(T){postorder(T->lchild);postorder(T->rchild);printf(M%c,,,T->data);}}voidcountleaf(bitreeT,int&n){if(T)countleaf(T->lchild,n);if(!T->lchild&&!T->rchild)
5、n++;countleaf(T->rchild,n);}}voiddepth(bitreeT,int&dep){intdep1,dep2;if(!T)dep=0;else{depth(T->lchild,dep1);depth(T->rchild,dep2);dep=dep1>dep2?dep1+1:dep2+1;}}voidoutput(bitreeT){if仃){printf(M%cM,T->data);if(T->lchild
6、
7、T->rchild){printffV);output(T->lchild);if(T->rchild)printfC';');output(T->
8、rchild);print©”);}}}intmain(){bitreeT;intn=0,dep;printf(”请输入二叉树先序列:M);create(T);printf(MH);prints先序为门;preorder(T);printf(MM);printf(”中序为:”);inorder(T);printf(”后序为门;postorder(T);printf(MM);depth(T,dep);printfCW度dep=%dH,dep);countleaf(T,n);printf(”叶子结魚数n=%dM,n);printf(f■二叉树的嵌套括号形式为:”);
9、output仃);printf(MM);return0;}