版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验目的编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历。实验内容编程序并上机调试运行。编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历 编写程序/*二叉树的遍历*/#include#includetypedef struct BiTNodechar data;struct BiTNode *lchild,*rchild;BiTNode,*BiTree;/按先序次序构建的二叉树链表void CreatBiTree(BiTree *T)char ch; if(ch=getchar()= ) *T=NULL;else *T=(BiTNode*)malloc(sizeof(BiTNode
2、); if(!(*T) exit(1);(*T)-data=ch; CreatBiTree(&(*T)-lchild); CreatBiTree(&(*T)-rchild);/先序遍历-递归算法void PreOrderTraverse(BiTree T) if(T) printf(%c,T-data); PreOrderTraverse(T-lchild); PreOrderTraverse(T-rchild);/中序遍历-递归算法void InOrderTraverse(BiTree T)if(T)InOrderTraverse(T-lchild); printf(%c,T-data);I
3、nOrderTraverse(T-rchild);/后序遍历-递归算法void PostOrderTraverse(BiTree T)if(T)PostOrderTraverse(T-lchild);PostOrderTraverse(T-rchild); printf(%c,T-data);/main 函数 void main() BiTree T;printf(请按先序次序输入二叉树中结点的值,空格字符表示空树:n”);CreatBiTree (&T);printf(n);printf(”先序遍历为:n);PreOrderTraverse(T);printf(nn);printf(中序遍历
4、为:n);InOrderTraverse(T);printf(nn);printf(”后序遍历为:n);PostOrderTraverse(T);printf(nn);getchar();运行程序:请按先序次序输入二叉树中结点的值,空格字符表示空树:ABC DE G F请按先序次序输入二叉树中结点的値,空格字符表示空树:OBC DE G F先序遍历为=ABCDEGF中序遍历为;GBEGDFfi后序遍历为:CGEFDBfiPpess any 1吕屮 to continue结果分析:按先序输入的二叉树为ABCAADEAGAAFAAA (人为空格) 该二叉树画成树形为:其先序遍历为:ABCDEGF
5、其中序遍历为:CBEGDFA 其后序遍历为:CGEFDBA 可以看出运行结果是正确的。程序解析:1.首先是将程序的开头写好,因为后面要用到malloc,所以要有stdlib.h的 声明。然后建立指针表struct BiTNode,定义其数据类型为char型,指针指向 lchild,rchild,下一个指针为 BiTNode./*2_5!寸的盖豪盖序芳序芳序芳序芳序芳1* /itinclu(leitinclu(letypedeF struct BiTNodechar data;struct BiTHode *lchild 9*rcliild ;BiTHode,*BiTree;2按先序次序构建二叉
6、树链表To/ *穽穽養 *芈拦琴芈穽壬*養軒養琴提軒穽費来强*費餐餐釜餐穽餐穽餐蚤餐豊蚤关at/按先序次昂构建的二翼树链表uoid CreatBiTree(BiTree *T)char ch;if (ch = getctiar()=)*T=HULL;elsedata=ch;CreatBiTrpp(E;(*T)-lctiild);CreatBiTr&(&(*T)-rctiild);函数CreatBiTree为构建二叉树链表的函数,T为指针,定义ch为字符型,如果 输入为空格的话,指针就为空。否则,就新开辟一个单元,如果开辟失败,则强 制错误退出,如果开辟成功,就让ch指向新单元的数据,然后再指向
7、左孩子, 再指向右孩子。遇到的问题:一开始写的是以下程序:void CreatBiTree(BiTree T)char ch;iF(Cch=getchar()=)T=NULL;elsedata=ch;CreatBiTreeCT-Mchild); CreatBiTree(T-rchild);没有指针形式,调试的时候没有错误,也可以执行,但是执行的时候就发生以下错误:匸口空格字符表示空树:洗序遍历为:匸口空格字符表示空树:洗序遍历为:i| y.exe已停止工作凸现了一问题导錢程序亭止正常工惟.请关诩该程 序4关闭程序所以在T的前面加一个指针符号,因为要用指针指向新的结点,所以将后面的T都加上一 个
8、*,结果还是错误:P青按先序次序输入二叉树中结点的值,空格字符表示空树:HBC DE G F叵2| y-exe已停止工作口现了一r问题r导毀程序停止正帛工作.请关闭谚程 序4lchild);CreatBiTree(fe(*T)-rchild):这样结果就对了。3建立先序遍历函数。先序遍历一递归算法uoid PreOrderTrauersetBiTree T)data);PreOrderTrauersefT-lchild):PreOrderTrauer5e(T-rchild):用递归算法建立先序遍历的函数PreOrderTraverse,如果T不为0,则先输出其根,再 输出左孩子,在输出右孩子。
9、这种方法为递归算法,以下的中序,后序均与此类似。4建立中序遍历函数。/卑卑里卑舉卑关罢黑黑*罢罢黑里共*莫案穽弹莫黑器*器*弹*器*芈琴崔琴峯琴芈琴鉴芈聲芈聲誓弹豊餐共/ 中序遍历一递归算袪.void InOrderTrauerse(BiTree T)ifT)lchild);printf ,T-data);InOrderTraverse(T-rchild);用递归算法建立中序遍历函数InOrderTraverse,其函数的写法与先序的类似,先输出其 左孩子,再输出根节点,再输出其右孩子。书上的中序遍历用的是非递归算法,非递归算法 用的是栈,所以还要建栈,入栈,出栈等函数,相较于递归算法麻烦很多
10、。5建立后序遍历函数。/聲鑒擊睾事鑒睾案舉关舉舉舉卑里关里关舉关罢黑里罢罢里黑黑里罢穽穽琴穽穽藝穽穽穽穽*琴关#关*#/ 后序遍历一递归算袪.uoid PostOrderTraverse(BiTree T)if(T)lchild);PostOrderTrauerse(T-rchild); printf(c,T-data);用递归算法建立后序遍历函数PostOrderTraverse,先输出其左孩子,再输出其右孩子,再输 出其根节点。以C的格式输出。6建立main函数。/*#*#*#*#*#*#*#*/m日in函数void main()BiTree T;Printff请按先序次序输入二叉树中结点的值,空格字符表示空W:n-);CreatBiTree(&T); printFCXn);PintFC先序遍历为An);PreOrderTrauerseCT);printf (,nn,)jPrintf(中序遍历
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 利用基因编辑技术改进微生物脂质积累
- 三明市2024-2025学年第一学期高一期末数学质检主观题阅卷情况和教学建议
- 2024高中生物第二章动物与人体生命活动的调节第2节通过激素的调节精练含解析新人教版必修3
- 2024高中语文第二单元置身诗境缘景明情自主赏析登岳阳楼学案新人教版选修中国古代诗歌散文欣赏
- 2024高考地理一轮复习第八章第1讲农业的区位选择教案含解析新人教版
- 2024高考历史一轮复习方案专题十一世界经济的全球化趋势专题综合测验含解析人民版
- 2024高考地理一轮复习第一部分自然地理-重在理解第二章地球上的大气规范答题2气候类综合题学案新人教版
- DB42-T 2334-2024 水土保持区域评估技术导则
- 2024年湖北国土资源职业学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 二零二五年度新能源技术共享与推广实施合同3篇
- 台区线损综合分析台区线损分类及计算方法
- 2023年《早》舒淇早期古装掰全照原创
- 警用无人机考试题库(全真题库)
- 预应力简支梁施工
- GB/T 37046-2018信息安全技术灾难恢复服务能力评估准则
- 机井工程抽水试验质量验收表
- GA/T 1504-2018互联网交通安全综合服务管理平台数据接入规范
- 八年级思想品德中期试卷
- 江西省宜春市各县区乡镇行政村村庄村名明细及行政区划代码
- 气体灭火系统验收表1
- 幼儿系列故事绘本课件鸭子当总统-
评论
0/150
提交评论