下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二叉树实验报告09信管石旭琳 20091004418一、实验目的:1、理解二叉树的遍历算法及应用2、理解哈夫曼树及其应用。3、掌握哈夫曼编码思想。二、实验内容:1、建立二叉树二叉链表2、实现二叉树递归遍历算法(中序、前序、后序)3、求二叉树高度4、求二叉树结点个数5、求二叉树叶子个数6、将序号为偶数的值赋给左子树三、主要程序:#include<stdio.h> #include<stdlib.h> typedef int ElemType; struct BiTNode ElemType data;struct BiTNode *lch,*rch;BiTNode,*Bi
2、Tree;struct BiTNode struct BiTNode void preorder void inorder*creat_bt1();*creat_bt2();(struct BiTNode *t)(struct BiTNode *t);void postorder (struct BiTNode *t);void numbt (struct BiTNode *t);int n,n0,n1,n2;void main()int k;printf("nnn");printf("nn1. 建立二叉树方法1(借助一维数组建立)");printf(&
3、quot;nn2. 建立二叉树方法2( 先序递归遍历建立)");printf("nn3. 先序递归遍历二叉树");printf("nn4. 中序递归遍历二叉树");printf("nn5. 后序递归遍历二叉树");printf("nn6. 计算二叉树结点个数");printf("nn 7. 结束程序运行");printf("n=");doprintf("n 请输入你要执行的操作(1,2,3,4,5,6,7)");scanf("%d&qu
4、ot;,&k);printf("n");switch(k)case 1:printf(" 你选择的是操作1 ,现用方法1 进行建立二叉树n");BiTree=creat_bt1();/* 调用性质5建立二叉树算法*/break; case 2:printf(" 你选择的是操作2,现用方法2进行建立二叉树n");BiTree=creat_bt2(); /* 调用递归建立二叉树算法*/break; case 3:printf(" 你选择的是操作3,现进行先序递归遍历二叉树n 结果为 :");preorder(B
5、iTree);break;case 4:printf(" 你选择的是操作4,现进行中序递归遍历二叉树n 结果为 :");inorder(BiTree);break;case 5:printf(" 你选择的是操作5,现进行后序递归遍历二叉树n 结果为 :");postorder(BiTree);break;case 6:n=0,n0=0,n1=0,n2=0;/* 全局变量置0 */printf(" 你选择的是操作6,现进行计算二叉树结点个数n 结果为 :");numbt(BiTree);printf("n二叉树结点总数是:%d
6、",n);printf("n二叉树叶子结点数是:%d",n0);printf("n度为1 的结点数是:%d",n1);printf("n度为2的结点数是:%d",n2);break;case 7:printf(" 你选择的是操作8, 将结束本程序运行,谢谢你的使用,再见! n");break;while(k>=1&&k<7);struct BiTNode *creat_bt1()struct BiTNode *v50,*p,*t;int i,j;ElemType e;/*输入结
7、点的序号i、结点的数据e */printf("n i,data=");scanf("%d,%d",&i,&e);while(i!=0&&e!=0)p=(struct BiTNode *)malloc(sizeof(struct BiTNode);p->data=e;p->lch=NULL;p->rch=NULL;vi=p;if (i=1)/* 序号为 1 的结点是根*/t=p;elsej=(i+1)/2;if(i%2=0)/* 序号为偶数,做左孩子*/vj->lch=p;elsevj->rch
8、=p;printf("n i,data=");scanf("%d,%d",&i,&e);return t;struct BiTNode *creat_bt2()struct BiTNode *t;int e;printf("n data=");scanf("%d",&e);if(e=0) t=NULL;/* 对于0值,不分配新结点*/elset=(struct BiTNode *)malloc(sizeof(struct BiTNode);t->data=e;t->lch=cre
9、at_bt2();/* 左孩子获得新指针值*/t->rch=creat_bt2();return (t);void preorder (struct BiTNode *t)if(t)printf("%d ",t->data);preorder(t->lch);preorder(t->rch);void inorder (struct BiTNode *t)if(t)inorder(t->lch);printf("%d ",t->data);inorder(t->rch);void postorder(struct
10、 BiTNode *t)if(t)postorder(t->lch);postorder(t->rch);printf("%d ",t->data);void numbt(struct BiTNode *t)(if(t)(numbt(t->lch);(n+;if(t->lch=NULL&&t->rch=NULL)n0+;if(t->lch=NULL&&t->rch!=NULL)|(t->lch!=NULL&&t->rch=NUL L)n1+;if(t->lch!
11、=NULL&&t->rch!=NULL)n2+;numbt(t->rch);四、测试结果:你选择的是操作。现用方法2进行建立二叉树d-at-a =1Hata=2d-at-a -4.d总七县=0data=5(Lata =0dta=0data -3datA"8dAta=6dAta=0data=0请输入你要执行的操作S /," * J你选拄的是操作孔现进行先序递归遍历二叉树 拮果为 2 4 5 3 &请输入你要执行的操作3,2广,4.£6/4你选择的是操作现进行中序递归遍历二叉树结 为:4 2 5 13 6常输X你要执行的操作523磊5,6.7)5你选择的是操作5.现进行后序递归遍历二叉树售果为:4 5 2 6 3 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衢州2025年浙江衢州市衢江区廿里镇人民政府招聘第二批劳务派遣人员4人笔试历年参考题库附带答案详解
- 聊城2025年山东聊城东阿县城区小学教师竞聘100人笔试历年参考题库附带答案详解
- 潍坊2025年山东潍坊安丘市人民医院招聘护理等工作人员22人笔试历年参考题库附带答案详解
- 淮南2025年安徽淮南寿县选调教师及教研员210人笔试历年参考题库附带答案详解
- 河北2025年河北工业大学招聘专职科研人员笔试历年参考题库附带答案详解
- 抚州2025年江西抚州市宜黄县城区中小学选调教师86人笔试历年参考题库附带答案详解
- 广西2025年广西固体废物和化学品环境管理中心招聘笔试历年参考题库附带答案详解
- 山东2025年山东省文化和旅游厅所属事业单位招聘41人笔试历年参考题库附带答案详解
- 娄底2025年湖南涟源市教育系统选调教师218人笔试历年参考题库附带答案详解
- 南通中共南通市海门区委机构编制委员会办公室招聘政府购买服务人员笔试历年参考题库附带答案详解
- 兽医技能培训计划
- 灰土挤密桩的施工要点及质量控制措施
- GB/T 33450-2025科技成果转化为标准指南
- JJF(鄂) 175-2025 气压测试箱校准规范
- 广元中核职业技术学院《高等数学(3)》2025 - 2026学年第一学期期末试卷(A卷)
- 职业技能认定考评员考核试题与答案
- 床上运动及转移技术课件
- 子宫腺肌症术后护理
- 2024-2025苏教版小学数学二年级上册期末考试测试卷及答案(共3套)
- 光伏发电项目风险
- 风力发电项目分包合同施工合同
评论
0/150
提交评论