




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include iostream.h#include stdlib.h#include stdio.htypedef char ElemType;/定义二叉树结点值的类型为字符型const int MaxLength=10;/结点个数不超过10个typedef struct BTNode ElemType data; struct BTNode *lchild,*rchild;BTNode,* BiTree;void CreateBiTree(BiTree &T)/按先序次序输入,构造二叉链表表示的二叉树T,空格表示空树/ if(T) return; char ch; ch=getchar(); /不能用cin来输入,在cin中不能识别空格。 if(ch= ) T=NULL; else if(!(T=(BTNode *)malloc(sizeof(BTNode) coutdata=ch; CreateBiTree(T-lchild); CreateBiTree(T-rchild); void PreOrderTraverse(BiTree T)/先序遍历 if(T) coutdatalchild); PreOrderTraverse(T-rchild); void InOrderTraverse(BiTree T)/中序遍历 if(T) InOrderTraverse(T-lchild); coutdatarchild); void PostOrderTraverse(BiTree T)/后序遍历 if(T) PostOrderTraverse(T-lchild); PostOrderTraverse(T-rchild); coutdata ; void LevelOrderTraverse(BiTree T)/层序遍历 BiTree QMaxLength; int front=0,rear=0; BiTree p; if(T) /根结点入队 Qrear=T; rear=(rear+1)%MaxLength; while(front!=rear) p=Qfront; /队头元素出队 front=(front+1)%MaxLength; coutdatalchild) /左孩子不为空,入队 Qrear=p-lchild; rear=(rear+1)%MaxLength; if(p-rchild) /右孩子不为空,入队 Qrear=p-rchild; rear=(rear+1)%MaxLength; /非递归的先序遍历算法void NRPreOrder(BiTree bt) BiTree stackMaxLength,p; int top; if (bt!=NULL) top=0;p=bt; while(p!=NULL|top0) while(p!=NULL) coutdata; stacktop=p; top+; p=p-lchild; if (top0) top-; p=stacktop; p=p-rchild; /非递归的中序遍历算法void NRInOrder(BiTree bt) BiTree stackMaxLength,p; int top; if (bt!=NULL) top=0;p=bt; while(p!=NULL|top0) while(p!=NULL) stacktop=p; top+; p=p-lchild; if (top0) top-; p=stacktop;coutdata; p=p-rchild; /非递归的后序遍历算法/*bt是要遍历树的根指针,后序遍历要求在遍历完左右子树后,再访问根。需要判断根结点的左右子树是否均遍历过。可采用标记法,结点入栈时,配一个标志tag一同入栈(1:遍历左子树前的现场保护,2:遍历右子树前的现场保护)。首先将bt和tag(为1)入栈,遍历左子树;返回后,修改栈顶tag为2,遍历右子树;最后访问根结点。*/typedef struct BiTree ptr; int tag;stacknode;void NRPostOrder(BiTree bt) stacknode sMaxLength,x; BiTree p=bt; int top; if(bt!=NULL) top=0;p=bt; do while (p!=NULL) /遍历左子树 stop.ptr = p; stop.tag = 1; /标记为左子树 top+; p=p-lchild; while (top0 & stop-1.tag=2) x = s-top; p = x.ptr; coutdata; /tag为R,表示右子树访问完毕,故访问根结点 if (top0) stop-1.tag =2; /遍历右子树 p=stop-1.ptr-rchild; while (top0);/PostOrderUnrecint BTDepth(BiTree T)/求二叉树的深度 if(!T) return 0; else int h1=BTDepth(T-lchild); int h2=BTDepth(T-rchild); if(h1h2) return h1+1; else return h2+1; int Leaf(BiTree T)/求二叉树的叶子数 if(!T) return 0; else if(!T-lchild&!T-rchild) return 1; else return(Leaf(T-lchild)+Leaf(T-rchild);int NodeCount(BiTree T)/求二叉树的结点总数 if(!T) return 0; else return NodeCount(T-lchild)+NodeCount(T-rchild)+1;void main() BiTree T; T=NULL; int select; /cout请按先序次序输入各结点的值,以空格表示空树(输入时可连续输入):endl;/ CreateBiTree(T); while(1) coutnn请选择要执行的操作:n; cout1.创建二叉树n; cout2.二叉树的递归遍历算法(前、中、后)n; cout3.二叉树的层次遍历算法n; cout4.求二叉树的深度n; cout5.求二叉树的叶子结点n; cout6.求二叉树的结点总数n; cout7.二叉树的非递归遍历算法(前、中、后)n; /此项可选做 coutselect; switch(select) case 0:return; case 1: cout请按先序次序输入各结点的值,以空格表示空树(输入时可连续输入):endl; CreateBiTree(T); break; case 2: if(!T) cout未建立树,请先建树!; else coutn先序遍历:n; PreOrderTraverse(T); coutn中序遍历:n; InOrderTraverse(T); coutn后序遍历:n; PostOrderTraverse(T); break; case 3: coutn层序遍历:n; LevelOrderTraverse(T); break; case 4: cout二叉树的深度为:n; coutBTDepth(T); break; case 5: coutn叶子节点数:n; coutLeaf(T); break; case 6: cout总节点数:n; coutNodeCount(T); break; case 7: if(!T) cout未建立树,请先建树!; else coutn先序遍历:n; NRPreOrder(T); coutn中序遍历:n;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运输合同的概念与特征
- 室外施工工程合同
- 医疗器械研发与采购供应合同
- 五星级酒店厨师雇佣合同
- 通讯设备研发及销售合作合同
- 仓储场地租赁合同
- 工程施工劳务承包合同
- 房屋墙体改梁加固合同
- 家庭装修监理合同
- 融资租赁的保证合同
- 2025年高压电工操作证资格考试复习题库及答案(共五套)
- 中华礼仪文化知到课后答案智慧树章节测试答案2025年春广西国际商务职业技术学院
- 数学-江西省部分高中2025届高三下学期3月联合检测(一模)试题和解析
- 运动营养学(第三版)全套课件第1-10章
- 广东省实验中学广州市天河区附属实验学校2021-2022学年八年级下学期期中物理试题(含答案)
- 2025年通信安全员ABC证考试试题题库
- 2025年吉林司法警官职业学院单招职业技能测试题库审定版
- 初中数学专项练习《圆》100道计算题包含答案
- 测试工程师季度述职报告
- 2025-2031年中国工业自动化设备行业发展前景预测及投资方向研究报告
- 农村小学实施铸牢中华民族共同体意识教育实践探索
评论
0/150
提交评论