




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
仲恺农业工程学院实验报告纸 (院、系) 专业 班 组 课学号 姓名 实验日期 教师评定 实验三 二叉树的操作及应用一、实验目的 1、掌握二叉树的特点,以及二叉链表的结构 2、熟练掌握二叉树的各种操作,如建立、遍历、查找和输出 3、利用己经掌握的进行实际应用二、实验要求 1、 编写程序实现二叉树的各种运算,并在此基础上设计主函数,使其完成如下功能: (1)按先序建立二叉树,如“ABCDEGF”,(表示空格)。 (2)建立二叉树后,判断二叉树空否,同时输出二叉树的深度。 (3)建立二叉树后,判断二叉树空否,同时输出二叉树的结点数。 (4)建立二叉树后,判断二叉树空否,同时输出二叉树的叶子点数。 2、编写一个子函数,用非递归算法中序遍历二叉树。三、程序运算结果截图四、程序源代码#include#include#includestack.husing namespace std;/#define n 15static int num=0;static int nodenum=0;static int h=0;static int tmp=0;/typedef char ElemType;/typedef struct BItNodeElemType data; struct BItNode *lchild,*rchild;BitNode,*BitTree;/void Init(BitTree *t)(*t)=(BitTree)malloc(sizeof(BitNode); /二叉树初始化if(!t)exit(0);(*t)-lchild=(*t)-rchild=NULL;/BitTree Getlchild(BitTree t)return t-lchild; /获取左子树/BitTree Getrchild(BitTree t)return t-rchild; /获取右子树/bool Empty(BitTree t)if(t) return false; /判断是否为空else return true;/int Create(BitTree *t,ElemType a,int num)(*t)-data=anum;num+;if(anum!= &numlchild);num=Create(&(*t)-lchild),a,num); /创建二叉树num+;if(anum!= &numrchild);num=Create(&(*t)-rchild),a,num);elseh=htmp?h:tmp;tmp-;return num;/void visit(BitTree t)coutdatalchild)PreOrderTraverse(t-lchild); /递归先序遍历二叉树if(t-rchild)PreOrderTraverse(t-rchild);/void InOrderTraverse(BitTree t)if(t-lchild)InOrderTraverse(t-lchild); /递归中序遍历二叉树visit(t);if(t-rchild)InOrderTraverse(t-rchild);/void PosOrderTraverse(BitTree t)if(t-lchild)PosOrderTraverse(t-lchild); /递归后序遍历二叉树if(t-rchild)PosOrderTraverse(t-rchild);visit(t);/void nInOrderTraverse(BitTree t)BitTree tmp=t;Stack s;if(!tmp) return;dowhile(tmp!=NULL)s.Push(tmp); /非递归中序遍历二叉树tmp=Getlchild(tmp);tmp=s.Pop();visit(tmp);tmp=Getrchild(tmp);while(tmp!=NULL|s.Empty();s.Destory();/void main()ElemType an=A,B,C, , ,D,E, ,G, , ,F, , , ;cout先序创建的二叉树为(为空格):;for(int i=0;in;i+)if(ai= )cout-;elsecoutai-;coutendlendl;BitTree t;Init(&t);Create(&t,a,num);if(!Empty(t)cout二叉树的深度为 :hendl;cout二叉树的结点数为 :nodenum+1endl;cout二叉树的叶子结点数为:nodenumendl;coutendl;cout递归先序遍历二叉树 :;PreOrderTraverse(t);coutendlendl;cout递归中序遍历二叉树 :;InOrderTraverse(t);coutendlendl;cout递归后序遍历二叉树 :;PosOrderTraverse(t);coutendlendl;cout非递归中序遍历二叉树:;nInOrderTraverse(t);coutendlendl;头文件”stack.h”templateclass Stack/栈类private:int Maxsize;/栈的最大值private:T* base;/栈低private:T* top;/栈顶public: Stack();/初始化栈void Push(T p);/入栈T Pop();/出栈void Clear();/清空栈void Destory();/销毁栈int Length();/获取栈的长度bool Empty();/判断栈是否为空;templateStack:Stack():Maxsize(10)this-base=new TMaxsize;if(!this-base) exit(0);this-top=this-base;templatevoid Stack:Push(T p)if(this-top-this-base=Maxsize)this-base=new TMaxsize+10;if(!this-base) exit(0);this-top=this-base+this-Maxsize;this-Maxsize+=10;*(this-top)=p;this-top+;templateT Stack:Pop()if(this-top=this-base)return *(this-top); return *-(this-top);templatevoid Stack:Clear()this-top=this-base;templatevoid Stack:Destory()delete (this-base);this-base=this-top=NULL;this-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽公务员的考试题目及答案
- 医疗质量安全核心制度考试试题附答案(B卷)
- 2025年成人教育领域线上学习模式下的在线教育市场细分与定位研究
- 2025年老年健康管理长期照护服务模式与护理团队协作研究报告001
- 2025年电商平台售后服务与品牌形象塑造研究报告
- 河北张家口2025年公开招聘农村党务(村务)工作者笔试题带答案分析及完整答案详解1套
- 国企企业面试题库及完整答案详解【易错题】
- 考点解析-河南省登封市中考数学真题分类(实数)汇编单元测试试题(详解版)
- 2025年度票据保险与损失补偿服务合同
- 2025版汽车销售与保险组合合同范本
- 电线电缆产品生产许可证实施细则样本
- 阴阳学说剖析课件
- 湖南高职单招《综合素质测试》考试题库(含答案)
- 口腔颌面部外伤的处理课件
- 《现代涉外礼仪》课件
- 春风十里不如你:一本书读尽冯唐人生金线年轻时极尽欢喜年长
- UL塑料燃烧测试培训
- 产后骨盆修复培训课件
- 给排水检验批容量一览表
- 非标设备检验标准
- 皖2015s209 混凝土砌块式排水检查井
评论
0/150
提交评论