版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构程序设计报告学院:班级:学号: 姓名:实验名称:二叉树的建立与遍历一、 实验目的:1.掌握二叉树的二叉链表存储结构;2.掌握二叉树创建方法;3.掌握二叉树的先序、中序、后序的递归实现方法。二、实验内容和要求:创建二叉树,分别对该二叉树进行先序、中序、后序遍历,并输出遍历结果。三、叉树的建立与遍历代码如下:#include <stdio.h>#include <malloc.h>struct tnode/结点结构体char data;struct tnode *lchild,*rchild;typedef struct tnode TNODE;TNODE *cre
2、at(void)TNODE *root,*p;TNODE *queue50; int front=0,rear=-1,counter=0;/初始队列中需要的变量front、rear和计数器counterchar ch;printf("建立二叉树,请输入结点:(#表示虚节点,!表示结束)n"); ch=getchar();while(ch!='!')if(ch!='#') p=(TNODE *)malloc(sizeof(TNODE); p->data=ch; p->lchild=NULL; p->rchild=NULL;re
3、ar+; queuerear=p;/把非#的元素入队if(rear=0)/如果是第一个元素,则作为根节点root=p;counter+;elseif(counter%2=1)/奇数时与其双亲的左子树连接queuefront->lchild=p;if(counter%2=0)/偶数时与其双亲的右子树连接queuefront->rchild=p;front+;counter+; else/为#时,计数,但不连接结点if(counter%2=0)front+;counter+;ch=getchar();return root;void preorder(TNODE *bt)/先序遍历if
4、(bt!=NULL)printf("%c ",bt->data);preorder(bt->lchild);preorder(bt->rchild); void inorder(TNODE *bt)/中序遍历if(bt!=NULL)inorder(bt->lchild);printf("%c ",bt->data);inorder(bt->rchild); void postorder(TNODE *bt)/后序遍历if(bt!=NULL)postorder(bt->lchild);postorder(bt-&g
5、t;rchild);printf("%c ",bt->data); int main() TNODE *root; root=creat();printf("递归先序遍历是:"); preorder(root);printf("n");printf("递归中序遍历是:");inorder(root);printf("n");printf("递归后序遍历是:");postorder(root);printf("n");return 0;四、程序运行结果
6、:五、程序设计指导:1.创建二叉树的算法:首先对一般的二叉树,添加若干个虚结点使其成为完全二叉树,然后依次输入结点信息,若输入的结点不是虚结点,则建立一个新结点,若是第一个,则令其为根结点,否则将新结点链接至它的双亲结点上。如此重复下去,直至遇到输入结束符(自定)为止。为了使新结点能够与双亲结点正确相连,并考虑到这种方法中先建立的结点其孩子结点也一定先建立的特点,可以设置一个指针类型的数组构成的队列来保存已输入结点的地址,并使队尾(rear)指向当前输入的结点,队头(front)指向这个结点的双亲结点的前一个位置。由于根结点的地址放在队列的第一个单元里,所以当rear为奇数时,则rear所指的
7、结点应作为左孩子与其双亲链接,否则rear所指的结点应作为右孩子与其双亲链接。若双亲结点或孩子结点为虚结点,则无须链接。若一个双亲结点与两个孩子链接完毕,则进行出队操作,使队头指针指向下一个待链接的双亲结点。2. void preorder(TNODE *bt)函数:利用递归的思想,不断嵌套循环,读取结点元素,在每个循环中每次先读取,再进行进入下一个递归循环中。3.void inorder(TNODE *bt)函数 :利用递归的思想,不断嵌套循环,读取结点元素,在每个循环中每次先左子树,再读取结点元素,再进行进入下一个递归循环中。4.void postorder(TNODE *bt)函数:利用递归的思想,不断嵌套循环,读取结点元素,在每个循环中每次先分别进入左右子树,再进行读取,再进行进入下一个递归循环中。六、心得体会:本次数据结构程序设计对我有一定的帮助。通过这次的实践,使我对数据结构这门课程有了更深入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无线通信设备装调工安全文明水平考核试卷含答案
- 普通车工岗位工艺分析考核试卷含答案
- 2025年盘山县数学三下期末联考试题(含答案)
- 数码冲印师岗位理论评估考核试卷含答案
- 石英晶体滤波器制造工岗前协同配合考核试卷含答案
- 紧固件制造工保密意识评优考核试卷含答案
- 2025年甘肃省甘南藏族自治州玛曲县数学四下期末联考试题(含答案)
- 2025年甘肃省平凉市泾川县数学四下期中监测模拟试题(含答案解析)
- 2025年灵武市数学三年级下学期期末教学质量检测模拟试题(含答案解析)
- 一造重要试题及详细答案解析
- 低血容量性休克总结2026
- 某项目机电安装全过程管理要点总结
- 2025绍兴上虞区事业单位编外招聘22人(公共基础知识)综合能力测试题附答案解析
- 全国园林绿化养护概算定额(2018版)
- 2025年福建省工勤技能考试(行政事务人员技师)经典试题及答案
- 早产儿肠内营养管理
- 产品变更通知单模板PCN(4P)
- 分泌物廓清技术课件
- 2025至2030年中国视力训练仪行业市场现状分析及未来前景分析报告
- 2025年浙江嘉兴中新嘉善现代产业园开发有限公司招聘笔试参考题库含答案解析
- 德邦车管理制度
评论
0/150
提交评论