付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 二叉树的建立和遍历 学院 专业 班 学号 姓名 一 实习目的1. 掌握二叉链表的存储结构;2. 掌握二叉链表的建立;3. 掌握二叉树的先序遍历、中序遍历、后序遍历的递归算法;4. 掌握二叉树遍历算法的应用;二 实习内容1. 按先序序列建立二叉树的二叉链表(算法6.4)(空树用#表示)2. 对生成的二叉树分别进行先序遍历、中序遍历、后序遍历,输出结果。3 统计二叉树中结点个数; 4. 求二叉树的高度;三 实验步骤1. 定义 二叉链表的存储结构#include stdio.h#include stdlib.h typedef char TElemType;typedef struct Bi
2、TNode TElemType data; struct BiTNode *lchild, *rchild; / 左右孩子指针 BiTNode,*BiTree;2. 编写函数CreateBiTree,按先序序列建立二叉树的二叉链表;测试的字符序列为abdg#e#c#f#; 程序代码为:void CreateBiTree(BiTree &T) / 算法6.4:按先序次序输入二叉树中结点的值(可为字符型或整型,在主程中定义), 构造二叉链表表示的二叉树T。以#表示空树 TElemType ch; scanf(%c,&ch); if(ch=#) / 空 T=NULL; else T=(BiTree
3、)malloc(sizeof(BiTNode); / 生成根结点 if(!T) exit(-1); T-data=ch; CreateBiTree(T-lchild);/ 递归构造左子树 CreateBiTree(T-rchild);/ 构造右子树 2. 编写二叉树的先序遍历、中序遍历、后序遍历的递归算法 int preOrderTraverse(BiTree T) / 初始条件:二叉树T存在,先序递归遍历T; if(T=NULL) return 1; if(T!=NULL) / T不空 printf(%5c,T-data); / 访问根结点 preOrderTraverse(T-lchild
4、);/ 先序遍历左子树 preOrderTraverse(T-rchild);/ 先序遍历右子树 int inOrderTraverse(BiTree T) / 初始条件:二叉树T存在,中序递归遍历T; if(T=NULL) return 1; if(T!=NULL) / T不空 inOrderTraverse(T-lchild);/ 中序遍历左子树 printf(%5c,T-data); / 访问根结点 inOrderTraverse(T-rchild);/ 中序遍历右子树 int postOrderTraverse(BiTree T) / 初始条件:二叉树T存在, / 操作结果:后序递归遍
5、历T; if(T=NULL) return 1; if(T!=NULL) / T不空 postOrderTraverse(T-lchild);/ 后序遍历左子树 postOrderTraverse(T-rchild);/ 后序遍历右子树 printf(%5c,T-data); / 访问根结点 3. 编写函数统计二叉树中结点个数; (遍历算法)int countND(BiTree T) int n=0,k=0,m=0;if(T=NULL) return 0;else if(T-lchild!=NULL ) k=countND(T-lchild); / 后序遍历左子树,得到左子树结点个数if(T-
6、rchild!=NULL ) m=countND(T-rchild); / 再后序遍历右子树 n=m+k+1 ; return n;4. 编写函数求二叉树的高度;int Bitheight(BiTree T) int lh,rh,th;if(T=NULL)return 0; lh= Bitheight(T-lchild); / 递归求T的左子树的高度lhrh= Bitheight(T-rchild); /递归求T的右子树的高度rh if(lhrh) th=lh+1; else th=rh+1; return th;4. 编写 main 函数,调用函数,输出结构 void main() int i,k,h ; BiTree T; printf(请按先序输入二叉树(如:ab#表示a为根结点,b为左子树的二叉树)n); CreateBiTree(T); printf(先序遍历的结果为:n); i=preOrderTraverse(T); printf(n); printf(中序遍历的结果为:n); i=inOrderTraverse(T);printf(n); printf(后序遍历的结果为:n); i=postOrderTraverse(T);printf(n); k=countND(T); printf(结点个数为%dn,k); h= Bitheight(T); p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年及未来5年市场数据中国航空运输及机场行业发展前景预测及投资战略数据分析研究报告
- 2027届高三数学一轮复习课件:第十章 高考热点13 概率创新题
- 2026年及未来5年市场数据中国盐酸美西律片行业发展前景预测及投资方向研究报告
- 2026浙江金华市武义县泉溪镇专职消防队招聘1人考试备考题库及答案解析
- 2026年烟台海阳市卫生健康局所属事业单位公开招聘高层次人才补充考试参考题库及答案解析
- 2026年及未来5年市场数据中国骨肽注射液行业市场发展数据监测及投资战略咨询报告
- 2026四川成都市成华区猛追湾社区卫生服务中心招聘编外工作人员2人考试参考题库及答案解析
- 2026年重庆移通学院教师招聘笔试备考试题及答案解析
- 2026四川成都成华区府青路社区卫生服务中心社会招聘2人考试参考题库及答案解析
- 松香浸提工保密强化考核试卷含答案
- 反制无人机课件
- 2025年广东高考物理试题(解析版)
- 污水处理站运行管理与调度方案
- 肝与肾中医课件
- IECQ QC 080000:2025 第四版标准(中文版)
- 2025年云南省中考化学真题(原卷版)
- 【互联网医院】微脉互联网医院建设运营整体方案
- 能源行业供货应急服务方案
- 带病工作免责协议书
- 国家职业标准 4-07-03-02 劳动关系协调师 (2025年版)
- 《思想道德与法治》课件-第一章 领悟人生真谛 把握人生方向
评论
0/150
提交评论