版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/二叉树的基本操作#include <iostream.h> 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 on
2、echild(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=
3、'y'|ch1='Y') cout<<"1-建立二叉树 n" cout<<"2-先序遍历n" cout<<"3-中序遍历n"1 / 8 cout<<"4-后序遍历n" cout<<"5-单孩子结点数n" cout<<"6-双孩子结点数n" cout<<"7-叶子结点数n" cout<<"8-层序遍历n" cou
4、t<<"X-退出n" cin>>ch2; switch(ch2) case '1': cout<<"请输入按先序建立二叉树的结点序列:n"CreateBinTree(T);cout<<endl;break; case '2': cout<<"二叉树的先序遍历序列:n" PreOrder(T); cout<<endl; break; case '3': cout<<"二叉树的中序遍历序列:n&qu
5、ot; InOrder(T); cout<<endl; break; case '4': cout<<"二叉树的后序遍历序列:n" PostOrder(T); cout<<endl; break;case '5': cout<<"二叉树的单孩子结点数:n" n=onechild(T); cout<<n<<endl; cout<<endl; break;case '6': cout<<"二叉树的双孩子结点
6、数:n" n=twochild(T); cout<<n<<endl; cout<<endl; break;case '7': cout<<"二叉树的叶子结点数:n" n=leafs(T); cout<<n<<endl; cout<<endl; break; case '8': cout<<"二叉树的层序遍历序列:n" translevel(T); cout<<endl; break;case 'x&
7、#39;:case 'X': ch1='x' break; void CreateBinTree(BinTree &T) char ch; cin>>ch; 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 );cout<&
8、lt;T->data;InOrder(T->rchild ); void PostOrder(BinTree T)if(T)PostOrder(T->lchild );PostOrder(T->rchild );cout<<T->data; void PreOrder(BinTree T)if(T)cout<<T->data;PreOrder(T->lchild );PreOrder(T->rchild ); /层序遍历二叉树/采用一个队列q,先将二叉树的根 结点入队列,然后退队列,输出该结点,若它有左子树,便将左子树根结
9、点入队列,若它有右子树,便将右子树根结点入队列,如此直到队列空为止。/因为队列的特点是先进先出,从而达到按层序遍历的目的。 #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) cout<< b->data<<" "q.vecq.r=b; /结点指针进入队列q.r=q.r+1; /队尾指针后移 while(q.f&
10、lt;q.r) /队列不为空b=q.vecq.f; /队头出队列q.f=q.f+1;if(b->lchild!=NULL) /输出左孩子,并入队列 cout<< b->lchild->data<<" " q.vecq.r=b->lchild; q.r=q.r+1;if(b->rchild!=NULL) /输出右孩子,并入队列 cout<< b->rchild->data<<" " q.vecq.r=b->rchild; q.r=q.r+1; int onech
11、ild(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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖北黄冈应急管理职业技术学院单招职业技能测试题库带答案详解
- 2026年石家庄财经职业学院单招职业技能测试题库及参考答案详解
- 2026年山东外贸职业学院单招职业适应性测试题库及参考答案详解
- 2026年广州科技贸易职业学院单招综合素质考试题库及参考答案详解
- 2026年连云港职业技术学院单招职业技能测试题库及参考答案详解
- 2026年北海职业学院单招职业技能测试题库带答案详解
- 2026年云南工程职业学院单招综合素质考试题库及答案详解一套
- 2025年西安金麟投资有限公司招聘(12人)笔试考试备考试题及答案解析
- 2026年延安职业技术学院单招职业倾向性测试题库及参考答案详解1套
- 2026年苏州工业园区服务外包职业学院单招职业倾向性测试题库附答案详解
- 电梯形式检测报告
- 娱乐场所文明服务责任书
- 纤维增强混凝土
- 部编版九年级语文下册古诗文复习课件
- GB/T 19867.6-2016激光-电弧复合焊接工艺规程
- 闽教版三年级起点六年级上册英语《Unit-8-The-Universe-Part-A》(一等奖课件)
- 电气设备选择课件
- 体外诊断试剂工作程序-全套
- JJF (苏) 178-2015 防潮柜温度、湿度校准规范-(现行有效)
- 创伤急救四大技术共46张课件
- 电离辐射安全与防护基础试卷
评论
0/150
提交评论