已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/二叉树的基本操作#include typedef struct node /定义结点 char data; struct node *lchild, *rchild; BinTNode; typedef BinTNode *BinTree; /定义二叉树 void CreateBinTree(BinTree &T); /先序创建二叉树void PreOrder(BinTree T); /先序遍历二叉树void InOrder(BinTree T); /中序遍历二叉树void PostOrder(BinTree T); /后序遍历二叉树int onechild(BinTree T); /求度为1的结点的个数int leafs(BinTree T); /求叶子结点的个数int twochild(BinTree T); /度为2的结点的个数void translevel(BinTree b); /层序遍历二叉树 void main() int n; BinTree T; char ch1,ch2; cout欢迎进入二叉树测试程序的基本操作endl; cout-请选择-endl; ch1=y; while(ch1=y|ch1=Y) cout1-建立二叉树 n; cout2-先序遍历n; cout3-中序遍历n; cout4-后序遍历n; cout5-单孩子结点数n; cout6-双孩子结点数n; cout7-叶子结点数n; cout8-层序遍历n; coutch2; switch(ch2) case 1: cout请输入按先序建立二叉树的结点序列:n;CreateBinTree(T);coutendl;break; case 2: cout二叉树的先序遍历序列:n; PreOrder(T); coutendl; break; case 3: cout二叉树的中序遍历序列:n; InOrder(T); coutendl; break; case 4: cout二叉树的后序遍历序列:n; PostOrder(T); coutendl; break;case 5: cout二叉树的单孩子结点数:n; n=onechild(T); coutnendl; coutendl; break;case 6: cout二叉树的双孩子结点数:n; n=twochild(T); coutnendl; coutendl; break;case 7: cout二叉树的叶子结点数:n; n=leafs(T); coutnendl; coutendl; break; case 8: cout二叉树的层序遍历序列:n; translevel(T); coutch; if(ch=0) T=NULL; else T=(BinTNode *)new BinTNode; T-data=ch; CreateBinTree(T-lchild ); CreateBinTree(T-rchild ); void InOrder(BinTree T)if(T)InOrder(T-lchild );coutdata;InOrder(T-rchild ); void PostOrder(BinTree T)if(T)PostOrder(T-lchild );PostOrder(T-rchild );coutdata; void PreOrder(BinTree T)if(T)coutdata;PreOrder(T-lchild );PreOrder(T-rchild ); /层序遍历二叉树/采用一个队列q,先将二叉树的根 结点入队列,然后退队列,输出该结点,若它有左子树,便将左子树根结点入队列,若它有右子树,便将右子树根结点入队列,如此直到队列空为止。/因为队列的特点是先进先出,从而达到按层序遍历的目的。 #define MAXLEN 100void translevel(BinTree b) struct node BinTree vecMAXLEN; int f, r;q; /定义队列q, f 表示队头指针,r队尾指针q.f=0; /置队列为空队列q.r=0; if(b!=NULL) coutdata ;q.vecq.r=b; /结点指针进入队列q.r=q.r+1; /队尾指针后移 while(q.flchild!=NULL) /输出左孩子,并入队列 coutlchild-datalchild; q.r=q.r+1;if(b-rchild!=NULL) /输出右孩子,并入队列 coutrchild-datarchild; q.r=q.r+1; int onechild(BinTree T)/求度为1的结点的个数if(T=NULL) return 0;else if(T-lchild =NULL & T-rchild!=NULL|T-lchild!=NULL & T-rchild=NULL) return (onechild(T-lchild)+onechild(T-rchild)+1);elsereturn (onechild(T-lchild)+onechild(T-rchild);int leafs(BinTree T)int num1,num2;if(T=NULL) return 0;else if(T-lchild=NULL &T-rchild =NULL) return 1;else num1=leafs(T-lchild );num2=leafs(T-rchild );return num1+num2;int twochild(BinTree T)int num0=0,num1,num2;if(T=NULL) retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46667-2025基层兽医机构效能评估指南
- 脂肪烃生产工操作管理水平考核试卷含答案
- 珍珠岩制品工诚信品质知识考核试卷含答案
- 干酪素点制工安全实操考核试卷含答案
- 井下作业设备操作维修工道德竞赛考核试卷含答案
- 公司砖瓦干燥工岗位应急处置技术规程
- 起重机械维修工成果转化知识考核试卷含答案
- 语音文本介绍方案设计
- 自我介绍对外汉语
- 2025年菏泽市教师招聘参考题库及答案解析
- ERCP麻醉管理专家共识(2025版)解读 2
- 2025年互联网医院运营模式在医疗旅游市场中的拓展可行性研究报告
- 平安建设工作汇报
- 2024-2025学年高一上学期选科指导主题班会课件
- 2025至2030中国有机冷冻蔬菜行业市场发展现状及发展趋势与投资方向报告
- 中国人民公安大学《数据结构(Ⅰ)》2023-2024学年第二学期期末试卷
- DB 32-T 3699-2019江苏省城市道路照明设施养护规程
- 视频监控系统运维服务投标方案
- 高考语文复习议论文主体段落“五层结构法”写作指导课件
- 《室内照明的特点》课件
- 景区保洁员培训
评论
0/150
提交评论