




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.验证性实验7:二叉树子系统班级学号 BX100420 姓名 施程程 成绩 1实验目的(1)掌握二叉树的特点及其存储的方式。(2)掌握二叉树的创建和显示方法。(3)复习二叉树遍历的概念,掌握二叉树遍历的基本方法(4)掌握求二叉树的叶结点数、总结点数和深度等基本算法。2实验内容(1)按屏幕提示用前序方法建立一棵二叉树,并能按凹入法显示二叉树结构。(2)编写前序遍历、中序遍历、后序遍历、层次遍历程序。(3)编写求二叉树的叶结点数、总结点数和深度的程序。(4)设计一个选择式菜单,以菜单方式选择下列操作。 二 叉 树 子 系 统*);* 1-建 二 叉 树 *);* 2-凹 入 显 示 *);* 3-先 序 遍 历 *);* 4-中 序 遍 历 *);* 5-后 序 遍 历 *);* 6-层 次 遍 历 *);* 7-求 叶 子 数 *);* 8-求 结 点 数 *);* 9-求 树 深 度 *);* 0-返 回 *);*);请选择菜单号(0-9):3实验步骤:(1)输入并调试程序;(2)按下图建立二叉树;abcdef 二 叉 树 子 系 统 * * 1-建 二 叉 树 * * 2-凹 入 显 示 * * 3-先 序 遍 历 * * 4-中 序 遍 历 * * 5-后 序 遍 历 * * 6-层 次 遍 历 * * 7-求 叶 子 数 * * 8-求 结 点 数 * * 9-求 树 深 度 * * 0-返 回 * * 请选择菜单号:1请输入按先序建立二叉树的结点序列:说明:0代表后继结点为空,请逐个输入,按回车键输入下一结点。请输入根结点:a请输入a结点的左子结点:b请输入b结点的左子结点:d请输入d结点的左子结点:0请输入d结点的右子结点:0请输入b结点的右子结点:0请输入a结点的右子结点:c请输入c结点的左子结点:e请输入e结点的左子结点:0请输入e结点的右子结点:0请输入c结点的右子结点:f请输入f结点的左子结点:0请输入f结点的右子结点:0(3)检查凹入法显示的二叉树是否正确; 二 叉 树 子 系 统 * * 1-建 二 叉 树 * * 2-凹 入 显 示 * * 3-先 序 遍 历 * * 4-中 序 遍 历 * * 5-后 序 遍 历 * * 6-层 次 遍 历 * * 7-求 叶 子 数 * * 8-求 结 点 数 * * 9-求 树 深 度 * * 0-返 回 * * 请选择菜单号:2凹入表示法: a b d c e f 按回车键返回主菜单! (4)检查其他算法的正确性举例: 二 叉 树 子 系 统 * * 1-建 二 叉 树 * * 2-凹 入 显 示 * * 3-先 序 遍 历 * * 4-中 序 遍 历 * * 5-后 序 遍 历 * * 6-层 次 遍 历 * * 7-求 叶 子 数 * * 8-求 结 点 数 * * 9-求 树 深 度 * * 0-返 回 * * 请选择菜单号:3该二叉树的先序遍历序列为:a b d c e f4实验程序 #include#define TREEMAX 100typedef struct BTchar data;BT *lchild;BT *rchild;BT;BT *CreateTree();void ShowTree(BT *T);void Preorder(BT *T);void Postorder(BT *T);void Levelorder(BT *T);void Inorder(BT *T);void Leafnum(BT *T);void Nodenum(BT *T);int TreeDepth(BT *T);int count=0;void main()BT *T=NULL;char ch1,ch2,a;ch1=y;while(ch1=y|ch1=y)printf(n);printf(ntt 二叉树子系统);printf(ntt*);printf(ntt* 1-建 二 叉 树 *);printf(ntt* 2-凹 入 显 示 *);printf(ntt* 3-先 序 遍 历 *);printf(ntt* 4-中 序 遍 历 *);printf(ntt* 5-后 序 遍 历 *);printf(ntt* 6-层 次 遍 历 *);printf(ntt* 7-求 叶 子 数 *);printf(ntt* 8-求 结 点 数 *);printf(ntt* 9-求 树 深 度 *);printf(ntt* 0-返 回 *);printf(ntt*);printf(ntt 请选择菜单号(0-9):);scanf(%c,&ch2);getchar();printf(n);switch(ch2)case 1:printf(ntt请按先序序列输入二叉树的结点:n);printf(ntt说明:输入结点(0代表后继结点为空)后按回车.n);printf(ntt请输入根结点:);T=CreateTree();printf(ntt二叉树成功建立!n);break;case 2:ShowTree(T);break;case 3:printf(ntt该二叉树的先序遍历序列为:);Preorder(T);break;case 4:printf(ntt该二叉树的中序遍历序列为:);Inorder(T);break;case 5:printf(ntt该二叉树的后序遍历序列为:);Postorder(T);break;case 6:printf(ntt该二叉树的层次遍历序列为:);Levelorder(T);break;case 7:count=0;Leafnum(T);printf(ntt该二叉树有%d个叶子。n,count);break;case 8:count=0;Nodenum(T);printf(ntt该二叉树总共有%d个结点。n,count);break;case 9:printf(ntt该树的深度是:%d,TreeDepth(T);break;case 0:ch1=n;break;default:printf(ntt*请注意:输入有误!*);if(ch2!=0)printf(nntt按【Enter】键继续,按任意键返回主菜单!n);a=getchar();if(a!=xA)getchar();ch1=n;BT *CreateTree()BT *t;char x;scanf(%c,&x);getchar();if(x=0)t=NULL;elset=new BT;t-data=x;printf(ntt请输入%c结点的左子结点:,t-data);t-lchild=CreateTree();printf(ntt请输入%c结点的右子结点:,t-data);t-rchild=CreateTree();return t;void Preorder(BT *T)if(T)printf(%3c,T-data);Preorder(T-lchild);Preorder(T-rchild);void Inorder(BT *T)if(T)Inorder(T-lchild);printf(%3c,T-data);Inorder(T-rchild);void Postorder(BT *T)if(T)Postorder(T-lchild);Postorder(T-rchild);printf(%3c,T-data);void Levelorder(BT *T)int i,j;BT *q100,*p;p=T;if(p!=NULL)i=1;qi=p;j=2;while(i!=j)p=qi;printf(%3c,p-data);if(p-lchild!=NULL)qj=p-lchild;j+;if(p-rchild!=NULL)qj=p-rchild;j+;i+;void Leafnum(BT *T)if(T)if(T-lchild=NULL&T-rchild=NULL)count+;Leafnum(T-lchild);Leafnum(T-rchild);void Nodenum(BT *T)if(T)count+;Nodenum(T-lchild);Nodenum(T-rchild);int TreeDepth(BT *T)int ldep,rdep;if(T=NULL)return 0;elseldep=TreeDepth(T-lchild);rdep=TreeDepth(T-rchild);if(ldeprdep)return ldep+1;elsereturn rdep+1;void ShowTree(BT *T)BT *stackTREEMAX,*p;int levelTREEMAX2,top,n,i,width=4;if(T!=NULL)printf(ntt凹入表示法:ntt);top=1;stacktop=T;leveltop0=width;while(top0)p=stacktop;n=leveltop0;for(i=1;idata);for(i=n+1;irchild!=NULL)top+;stacktop=p-rchild;leveltop0=n+width;leveltop1=2;if(p-lchild!=NULL)top+;stacktop=p-lchild;leveltop0=n+width;leveltop1=1;5程序运行 6实验小结本章要求我们掌握的是二叉树的特点、存储方式、创建、显示、遍历以及节点数等计算方法。这个实验要求设计的是一颗二叉树,要求能用凹入法显示二叉树的结构,能读出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏无锡市市级机关遴选公务员26人考试参考试题及答案解析
- 2025年国际货运代理服务合同(包含大宗货物公路运输)
- 2025年校园食堂食品安全培训与监督服务合作协议
- 2025年社区物业防疫消毒及健康监测服务合同
- 2025年校园环境优化与智能化保洁服务合同
- 2025年光伏发电设施安装与全程维护保养服务合同
- 2025年度生物医药企业专用药品配送合作协议
- 2025年城市综合体商业租赁与生态农业观光园项目合作协议
- 2025年汽车租赁与维修保养服务协议范本
- 2025年度企业宣传册形象代言模特肖像权独占授权合同
- 病历质量定期检查评估与反馈制度
- 胖东来考试试题及答案
- 乐天地产(成都)有限公司乐天广场四期项目环评报告
- 人教版初二地理上册课件:从世界看中国第一节 疆域
- 初中生叛逆期教育主题班会
- 小学国家领土与主权教育
- 《农村基层干部廉洁履行职责规定》知识培训
- 符合标准2025年乡村全科助理医师考试试题及答案
- 2025年矿产权评估师练习题及参考答案一套
- 2025年长沙环境保护职业技术学院单招职业技能测试题库附答案
- 人工智能技术在中职语文教学中的实践
评论
0/150
提交评论