



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 二叉树的建立和遍历 学院 专业 班 学号 姓名 一 实习目的1. 掌握二叉链表的存储结构;2. 掌握二叉链表的建立;3. 掌握二叉树的先序遍历、中序遍历、后序遍历的递归算法;4. 掌握二叉树遍历算法的应用;二 实习内容1. 按先序序列建立二叉树的二叉链表(算法6.4)(空树用#表示)2. 对生成的二叉树分别进行先序遍历、中序遍历、后序遍历,输出结果。3 统计二叉树中结点个数; 4. 求二叉树的高度;三 实验步骤1. 定义 二叉链表的存储结构#include stdio.h#include stdlib.h typedef char TElemType;typedef struct BiTNode 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 )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);/ 先序遍历左子树 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存在, / 操作结果:后序递归遍历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-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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市轨道交通站点周边土地利用与城市可持续发展报告
- 地产建筑行业建筑设计规划
- 学员协议书样例
- 结婚典礼祝福致辞范本
- 医疗器械数字化数字化转型研究
- 跑步机行业工艺流程优化策略
- 安全教育培训职能课件
- 2025年氢能重卡在矿山运输中的应用前景及挑战报告
- 辽宁省名校联盟2025-2026学年高二上学期9月联考英语试题(含答案无听力原文及音频)
- 2025年教育大数据在教育行业投资决策中的应用与挑战
- 新媒体营销与运营完整全套教学课件
- “三通一平”工程施工标准合同
- 玉米联合收获机械
- 新行政诉讼法
- 2023年安徽国贸集团控股有限公司招聘笔试模拟试题及答案解析
- 医学人文与叙事课件
- 三年级美术上册《魔幻颜色》课件
- 部编版一年级上册语文全册优秀课件
- 《横》书法教学课件
- 工程项目进度管理-课件
- 土壤肥料全套课件
评论
0/150
提交评论