版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据就结构实验报告姓名:班级:学号:日期:上机环境:win7 系统,mircosoft visual+1. 实验题目编写一个程序,实现二叉树的各种运算,并在此基础上设计一个程序完成如下功能。(1)输出二叉树b;输出h节点的左右孩子节点值;输出二叉树的深度;(4)输出二叉树b的节点个数; 输出二叉树b的叶子节点个数;(6) 输出二叉树的先序遍历;(7) 输出二叉树的中序遍历;(8) 输出二叉树的后序遍历;2. 实验程序#incl ude<stdio.h>#in clude<malloc.h>#define maxsize 100typedef char elemtype;
2、typedef struct nodeelemtype data;struct node *lchild;struct node *rchild;jbtnode;void create盯node(btnode *&b,char *str)btnode *stmaxsize,*p=null;int topl,k,j=o;char ch;b=null;ch=strj;while(ch!='0')switch(ch)case'(':top+;sttop=p;k=l;break;case')':top-;break;case','
3、:k=2;break;default:p=(btnode *)malloc(sizeof(btnode);p->data=ch;p->lchild=p->rchild=null;if(b=null)b=p;elseswitch(k)case l:sttop->lchild=p;break; case 2:sttop->rchild=p;break; j+;ch=strj;btnode *findnode(btnode *b,elemtype x)btnode *p;if(b=null)return null;else if(b->data=x)return
4、b;elsep=findnode(b->lchild,x);if (p!=null)return p;elsereturn findnode(b->rchild,x);盯node *lchildnode(btnode *p)return p->lchild;btnode *rchildnode(盯node *p)return p->rchild;int btnodeheight(btnode *b)int lchildh,rchildh;if(b=null)return (0);else lchildh=btnodeheight(b->lchild); rchil
5、dh=btnodeheight(b->rchild);return(lchildh>rchildh)?(lchildh+l):(rchildh+l);void dispbtnode(btnode *b)讦(b!=null) printf("%c",b->data);if(b->lchild!=null| |b->rchild!=null)printfc'c1);dispbtnode(b->lchild);if(b>rchild匕null) printf(t);dispbtnode(b->rchild); printf(
6、")");void displeaf(btnode *bjnt &m)讦(b!=null)if(b->lchild=null&&b>rchildhnull) m+;displeaf(b->lchild,m);displeaf(b->rchildzm);int nodes(btnode *b)int nl,n2;if(b=null)return 0;else 讦(b->lchild=null&&b->rchild=null) return 1;elsen l=nodes(b->lchild);n
7、 2=nodes(b->rchild);return(nl+n2+l);void preorder(btnode *b)if(b!二 null)printf("%c ",b->data);preorder(b->lchild); preorder(b->rchild);void lnorder(btnode *b)if(b!=null)lnorder(b->lchild); printf("%c ",b->data); lnorder(b->rchild);void postorder(btnode *b)if(
8、b!=null)postorder(b->lchild);postorder(b->rchild); printf("%c ",b->data);*njvoid menu()printf("*z:叉树的操作printf(h (1)输出二叉树n“);printf(n (2)输出节点h的左右孩子节点n”); prints输出二叉树的高度n”);printfc* (4)输出二叉树的叶子节点个数n“);printf("输出二叉树的节点个数n“); printff (6)输出先序遍历n“);printfc输出中序遍历n“);printf(&quo
9、t; (8)输出后续遍历n"); printfc (0)退出n”); void main()btnode *b,*x; int k;int m=0;create btnode(b;,a(b(d/e(h(j/k(l/m(/n)/c(f/g(/l)n); men u();printff*请输入数字:nu);scanf(”d”,&k);while(k)switch(k)case 1:dispbtnode(b); printfcv");k=0;break;case 2:x=findnode(b,'h');讦(x)printf(" %c “,x>
10、;data);elsereturn;if(lchildnode(x)printf("左孩子:c "zlchildnode(x)->data); elseprintf(”左孩子:null");if(rchildnode(x)printf("右孩子:c ",rchildnode(x)->data); elseprintf(h 右孩 了:null");printf(”n“); break;case 3:printf(”高度:dn",btnodeheight(b);break;case 4:displeaf(b,m);p
11、rintf(”叶子节点个数:dn”,m); break;case 5:printf(”节点个数:%dn",nodes(b); break;case 6:printf(”先序遍历:n");preorder(b);printfcxn");break;case 7:printf(”中序遍历:nh);inorder(b); printf(”n“); break;case &printf(”后序遍历:nh); postorder(b); printf(”n“); break;default:return;men u();printff'it输入数字:n&qu
12、ot;); scanf(”d”,&k);3.实验结果sb c:v/: ndowssystem32cmd.exe*経細*二叉树的操作*細*(1) 输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:1a(b(d,e(h(j,k(l, m(, n), c(f, g(, i) 細炖*秤*糾二叉树的操作細湃渺炖糾材(1)输出二叉树输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6
13、) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:*ii乍 *(1) 输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:2h左孩子:j右孩子:k* 二叉树 的操作*(1) 输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:qb c:windowssyste
14、m32cmd.exe* 二叉树 的操作*(1) 输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:3高度:7* 二叉树 的操作*(1) 输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:qb c:windowssystem32cmd.exe回* 二叉树的操作 *a(1)输出二叉树(2
15、)输出节点h的左右孩子节点(3)输出二叉树的高度(4)输出二叉树的叶子节点个数£(5)输出二叉树的节点个数 (6)输出先序遍历.(7)输出中序遍历1 (8)输出后续遍历(0)退出请输入数字:叶子节点个数:6* 二叉树的操作林 *(1)输出二叉树(2)输出节点h的左右孩子节点(3)输出二叉树的高度(4)输出二叉树的叶子节点个数(5)输出二叉树的节点个数(6)输出先序遍历(7)输出中序遍历(8)输出后续遍历(0)退出请输入数字:属. -is-叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7)
16、输出中序遍历(8) 输出后续遍历(0)退出请输入数字:6先序遍历abdehjklmncfgi* 二叉树的操 作*(1) 输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出请输入数字:sb c:windowssystem32c*nc.exe(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8) 输出后续遍历(0)退出 请输入数字:7 中序遍历:*京* 二叉树 的操 作*(1)输出二叉树(2) 输出节点h的左右孩子节点(3) 输出二叉树的高度(4) 输出二叉树的叶子节点个数(5) 输出二叉树的节点个数(6) 输出先序遍历(7) 输出中序遍历(8)输出后续遍历(0)退出 请输入数字:薇软拼音-简捷2010半: 二qg c:windowssystem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年红外光学石英玻璃投资申请报告
- 德勤:高级管理人员薪酬激励理论与操作实务
- 保险资料开口量定收入
- 热工常用设备的安装x
- 3《安塞腰鼓》公开课一等奖创新教学设计
- 考研数学二分类模拟235
- 药物化学(上)智慧树知到答案2024年烟台大学
- 备战2024年高考易错题(新高考专用)专题16 第二次世界大战后的世界(4大考点11个易错点)含答案
- 2024年中国MCN行业市场集中度、投融资动态及未来趋势预测报告(智研咨询发布)
- 24年注安-法规-四色笔记
- 第10课 马克思主义的诞生和国际工人运动的发展(教学设计)-【中职专用】《世界历史》(高教版2023•基础模块)
- 1.5口语交际:倾听(教案)-【中职专用】2023-2024学年高一语文随堂同步名师课堂(高教版2023·基础模块上册)
- DBJ-T 15-98-2019 建筑施工承插型套扣式钢管脚手架安全技术规程
- 光伏组件生产员工考核试卷
- 2023工贸企业重大事故隐患判定标准课件
- 2023-2024学年安徽省合肥三十八中九年级(上)期中英语试卷
- 呼吸功能锻炼-缩唇呼吸
- 长途汽车客运站调研分析报告
- 以史筑路-以勤达梦-2021年广东中考历史之高效复习策略(共28张课件)
- 中药饮片的储存与养护基本知识
- 第1.3课《长征胜利万岁》-【中职专用】高一语文(高教版2023基础模块下册)(原卷版)
评论
0/150
提交评论