




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、实验目的选择二叉链式存储结构作为二叉树的存储结构,设计一个程序实现二叉树的基本操作(包括建立、输出、前序遍历、中序遍历、后序遍历、求树高、统计叶子总数等)二、实验开发环境Windows 8.1 中文版Microsoft Visual Studio 6.0三、实验内容程序的菜单功能项如下:1-建立一棵二叉树2-前序遍历递归算法3-前序遍历非递归算法4- 中序遍历递归算法5- 中序遍历非递归算法6- 后序遍历递归算法7- 后序遍历非递归算法8-求树高9-求叶子总数10-输出二叉树11-退出四、实验分析1、建立一棵二叉树2、输入二叉树各节点数据cout 请按正确顺序输入二叉树的数据 :; cin
2、.getline(t,1000);/先把输入的数据输入到一个 t 数组3、递归前序遍历void BL1(ECS_data *t) if(NULL!=t) coutdatal); BL1(t-r); 4、非递归前序遍历void preOrder2(ECS_data *t) stack s; ECS_data *p=t; while(p!=NULL|!s.empty() while(p!=NULL) coutdatal; if(!s.empty() p=s.top(); s.pop(); p=p-r;5、递归中序遍历void BL2(ECS_data *t) if(NULL!=t)BL2(t-l)
3、;coutdatar);6、非递归中序遍历void inOrder2(ECS_data *t) /非递归中序遍历stack s;ECS_data *p=t;while(p!=NULL|!s.empty()while(p!=NULL)s.push(p); p=p-l;if(!s.empty()p=s.top(); coutdatar;7、递归后序遍历void BL3(ECS_data *t)if(NULL!=t)BL3(t-l);BL3(t-r);coutdata,;8、非递归后序遍历void postOrder3(ECS_data *t)stack s;ECS_data *cur; /当前结点
4、ECS_data *pre=NULL; / 前一次访问的结点s.push(t);while(!s.empty()cur=s.top();if(cur-l=NULL&cur-r=NULL)|(pre!=NULL&(pre=cur-l|pre=cur-r)coutdatar!=NULL)s.push(cur-r);if(cur-l!=NULL)s.push(cur-l);9、求树高int Height (ECS_data *t)if(t=NULL) return 0;elseint m = Height ( t-l );int n = Height(t-r);return (m n) ? (m+1
5、) : (n+1);10、求叶子总数int CountLeaf(ECS_data *t)static int LeafNum=0;/ 叶子初始数目为 0,使用静态变量if(t)/ 树非空if(t-l=NULL&t-r=NULL)/ 为叶子结点LeafNum+;/ 叶子数目加 1else/不为叶子结点Cou ntLeaf(t-l);递归统计左子树叶子数目Cou ntLeaf(t-r);递归统计右子树叶子数目 return LeafNum;五、运行结果附:完整程序源代码:二叉树链式存储的实现#in clude#in clude#in elude using n amespace std;struc
6、t ECS_data /先定义好一个数据的结构 char data;ECS_data *l;ECS_data *r; 一class ECSprivate:/in t level;/ 树高int n;/表示有多少个节点数int n1;表示的是数组的总长度值,(包括#),因为后面要进行删除判断ECS_data *temp1000; public:ECS_data *root;ECS() / 初始化ECS_data *p;char t1000;int i; int front=0,rear=1;入的点的父母/front 表示有多少个节点, rear 表示当前插coutvv请按正确顺序输入二叉树的数据
7、cin.getline(t,1000); /coutt endl; int n1=strlen(t);n=0;/先把输入的数据输入到一个 t 数组/测量数据的长度for(i=0;idata=ti;p-l=NULL;p-r=NULL;front+;tempfront=p;if(1 = front)root=p;elseif(p!=NULL)&(0=front%2)temprear-l=p;/ 刚开始把这里写成了 =if(p!=NULL)&(1=front%2) temprear-r=p;if(1=front%2)rear+;/就当前的数据找这个数据的父母ECS()/释放内存int i; for(
8、i=1;i=n;i+) if(tempi!=NULL) delete tempi;void JS()/记录节点的个数int s;s=n;coutvv该二叉树的节点数为:vvsvvendl;void BL1(ECS_data *t)/ 递归前序遍历if(NULL!=t)coutdatal);BL1(t-r);void preOrder2(ECS_data *t) /非递归前序遍历stack s;ECS_data *p=t; while(p!=NULL|!s.empty() while(p!=NULL) coutdatal; if(!s.empty()p=s.top();s.pop(); p=p-
9、r;void BL2(ECS_data *t)/ 递归中序遍历if(NULL!=t)BL2(t-l);coutdatar);void inOrder2(ECS_data *t) /非递归中序遍历stack s;ECS_data *p=t; while(p!=NULL|!s.empty()while(p!=NULL)s.push(p); p=p-l;if(!s.empty()p=s.top(); coutdatar;void BL3(ECS_data *t)/ 递归后序遍历if(NULL!=t)BL3(t-l);BL3(t-r);coutdata,;void postOrder3(ECS_dat
10、a *t) /非递归后序遍历stack s;ECS_data *cur; /当前结点ECS_data *pre=NULL; / 前一次访问的结点s.push(t);while(!s.empty()cur=s.top();if(cur-l=NULL&cur-r=NULL)| (pre!=NULL&(pre=cur-l|pre=cur-r)coutdatar!=NULL) s.push(cur-r);if(cur-l!=NULL)s.push(cur-l);int Height (ECS_data *t)/ 求树高if(t=NULL) return 0;elseint m = Height ( t
11、-l );int n = Height(t-r);return (m n) ? (m+1) : (n+1);int CountLeaf(ECS_data *t)/ 求叶子总数static int LeafNum=0;/ 叶子初始数目为 0,使用静态变量if(t)/ 树非空if(t-l=NULL&t-r=NULL)/ 为叶子结点 LeafNum+;/ 叶子数目加 1else/不为叶子结点Cou ntLeaf(t-l);递归统计左子树叶子数目Cou ntLeaf(t-r);递归统计右子树叶子数目return LeafNum;int main()ECS a;a.JS();cout 递归前序遍历 :;a.BL1(a.root);coutendl;cout 非递归前序遍历 :;a.preOrder2(a.root); coutendl;coutvv递归中序遍历:;a.BL2(a.root);coutendl;coutvv非递归中序遍历:;a.inOrder2(a.root); c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国土地一级开发项目创业计划书
- 中国红外气血循环机项目创业计划书
- 中国核桃深加工项目创业计划书
- 中国家庭信息机项目创业计划书
- 中国鸡饲养项目创业计划书
- 中国CAD软件项目创业计划书
- 中国肉牛养殖加工项目创业计划书
- 中国急救药箱项目创业计划书
- 中国观赏树木项目创业计划书
- 2025建筑工程劳务分包(清包工)合同
- 50097马工程-国际组织(第二版)全套课件
- 数字电子技术基础(第六版)阎石版课后答案课后题答案与解析课后习题答案
- 自身免疫性脑炎
- 项目部用印台账
- 体育与健康人教版三年级上册前滚翻教案
- GB 38454-2019 坠落防护 水平生命线装置
- 2022年北京市西城区八年级下学期期末语文试卷
- 中班绘本《跑跑镇》微课件
- 基于岗位拓展模型和KPI的主基二元考核绩效体系的构建
- 初三英语毕业考试补考试卷
- 消防安全工作台账表格汇总
评论
0/150
提交评论