




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学校代码:10128学 号:201220905048 数据结构实验报告(题 目:二叉树遍历算法的设计学生姓名:孙跃学 院:理学院系 别:数学系专 业:信息与计算科学班 级:信计12-2任课教师:杜雅娟二一四年十一月2一、实验目的通过理解二叉树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。二、程序分析本演示程序用Visual C+ 6.0编写,完成二叉树的遍历算法。1.按先序次序输入二叉树中结点的值,构造二叉链表表示的二叉树t;2.对二叉树t作先序、中序、后序遍历的递归算法,输出结果;3.计算二叉树t的深度,输出结果;4.计算二叉树t的叶子结点个数。三、程序设计在开头定义了
2、二叉树的链式存储结构,此处采用了每个结点中设置三个域, 即值域,左指针域和右指针域。1、 二叉树的建立链式存储结构,首先typedef struct BiTNode:定义二叉树的链式存储结构,此处采用了每个结点中设置三个域,data:即值域,*lchild:左指针域和rchild:右指针域;2、 二叉树的前序遍历;利用二叉链表作为存储结构的前序遍历:先访问根结点,再依次访问左右子树;3、 二叉树的中序遍历;利用二叉链表作为存储结构的中序遍历:先访问左子数,再访问根结点,最后访问右子树;4、 二叉树的后序遍历;利用二叉链表作为存储结构的前序遍历:先访问左右子树,再访问根结点;5、 求二叉树的深度
3、:首先判断二叉树是否为空,若为空则此二叉树的深度为0。否则,就先别求出左右子树的深度并进行比较,取较大的+1就为二叉树的深度;6、 二叉树的求叶子结点的个数计算;先分别求得左右子树中各叶子结点个数,再计算出两者之和即为二叉树的叶子结点数;7、 主函数:主函数中分别调用各函数。四、 实验程序#include<stdio.h>#include<malloc.h>#define M 20typedef struct nodechar data;struct node *lchild,*rchild;BTnode;BTnode * create()BTnode *t;char
4、ch;scanf("%c",&ch);if(ch='#')t=NULL;elset=(BTnode*)malloc(sizeof(BTnode);t->data=ch;t->lchild=create();t->rchild=create();return t;void Inordertraverse(BTnode *t)int i=0;BTnode *p,*sM;p=t;dowhile(p!=NULL)si+=p;p=p->lchild;if(i>0)p=s-i;printf("%ct",p->
5、;data);p=p->rchild;while(i>0|p!=NULL);void Preordertraverse(BTnode *t)int i=0;BTnode *p,*sM;p=t;dowhile(p!=NULL)printf("%ct",p->data);if(p->rchild!=NULL)si+=p->rchild;p=p->lchild;if(i>0)p=s-i;while(i>0|p!=NULL);void Postordertraverse(BTnode *t)int slM;int i=0;BTnode
6、 *p,*sM;p=t;dowhile(p!=NULL)si=p;sli+=0;p=p->lchild;while(i>0&&sli-1=1)p=s-i;printf("%ct",p->data);free(p);if(i>0)sli-1=1;p=si-1;p=p->rchild;while(i>0);printf("n");int high(BTnode *t)int h,lh,rh;if(!t)return 0;lh=high(t->lchild);rh=high(t->rchild);
7、h=lh?lh+1:rh+1;return h;int leafcount(BTnode *t,int &n)BTnode *p=t;if(p)if(p->lchild=NULL&&p->rchild=NULL)n+;n=leafcount(p->lchild,n);n=leafcount(p->rchild,n);return n;void main()BTnode *t;int n=0;printf("input data: ");t=create();printf("n Preordertraverse: &q
8、uot;);Preordertraverse(t);printf("n Inordertraverse: ");Inordertraverse(t);printf("n the left's number: ");n=leafcount(t,n);printf("%d",n);printf("n the high of the bintree: ");n=high(t);printf("%d",n);printf("n Postordertraverse: ");Po
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 欢乐周末团队历奇小组(计划书)
- 项目管理制度 (二)
- 襄阳枣阳市招聘事业单位工作人员考试试题及答案
- 2025年新型分子筛系列产品项目合作计划书
- 2025年玻璃、陶瓷制品生产专用设备合作协议书
- 2025年邮政专用机械及器材项目建议书
- 2025年高纯度丙烯酰胺及聚丙烯酰胺项目建议书
- 学习动力与教育环境的互动关系
- 教育创新论坛国际在线教育平台的挑战与机遇
- 教育国际合作打破教育壁垒的实践研究
- 统编版语文八年级下册全册大单元教学整体分析
- 新厂建设投产总结汇报
- 小学生道德与法治教育实施效果调研
- 工程检验检测机构安全培训
- 直播厅租赁方案
- 仓库管理知识培训图文
- 妇产科医患沟通课件
- 门诊病历书写模板全
- 八年级英语下册完形填空、阅读理解训练100题(含答案)
- 《公安机关人民警察内务条令》
- 2023年云南特岗教师真题(小学)
评论
0/150
提交评论