版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、GB8878185555334563BT9125XW创作編号丄创作肴:凤呜大王*二叉树的基本操作#include <iostream.h>typedef struct node 定义结点 char data;struct node *lchild,打child; BinTNode;typedef BinTNode *BinTree; 定义二叉树void CreateBinTree(BinTree &T);先序创建二义树void PreOrder(BinTree T);先序遍历二叉树void InOrder(BinTree T);中序遍历二叉树void PostOrder(B
2、inTree 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 chl,ch2;cout«H欢迎进入二义树测试程序的基本操作H«endl;chl='y'while(chl=yilchl =*¥*)coutvvT建立二叉树 n”;cout«&quo
3、t;2先序遍历n"cout«"3中序遍历n"cout«"4后序遍历n"cout«"5单孩子结点数n"cout«"6双孩子结点数n"cout«"7叶子结点数n”;cout«"8层序遍历n"cout«nX退出 n”;cin»ch2;switch(ch2)case T:cout«"请输入按先序建立二义树的结点序列:n"Create B inTree(T);cout«
4、;endl;break;case 2:coutvv”二义树的先序遍历序列:n”;PreOrder(T);cout«endl;break;case 3:cout«"二叉树的中序遍历序列:n"InOrder(T);break;case 4:coutvv”二叉树的后序遍历序列:iiH;创作編号上GB8878185555334563BT9125XW创作肴:凤呜大王*PostOrder(T);cout«endl;break;case 51cout«H二义树的单孩子结点数:n”;n=onechild(T);cout«n«end
5、l;cout«endl;break;case &:cout«"二义树的双孩子结点数:n"n=twochild(T);cout«n«endl;cout«endl;break;case 7:cout«H二义树的叶子结点数:n"n=leafs(T);cout«endl;break;case 8:cout«".rX树的层序遍历序列:n”;translevel(T);cout«endl;break;case x*:case X:chl='x;break;voi
6、d CreateBinTree(BinTree &T)char ch;cin»ch;if(ch='0,) T=NULL;elseT=(BinTNode *)new BinTNode;lL>data=ch;CreateBinTree(T->lchild );CreateBinTree(T->rchild );void InOrder(BinTree T)if(T)InOrder(T->lchild ); cout«T->data;InOrder(T->rchild );)void PostOrder(BinTree T)if
7、(T)PostOrder(T->lchild );PostOrder(T->rchild );cout«T->data;GB8878185555334563盯9125XW创作褊号上创作者:凤呜大王*void PreOrder( B inTree T)if(T)cout«T->data;PreOrder(T->lchild );PreOrder(T->rchild );)层序遍历二义树釆用一个队列q,先将二义树的根结点入队列,然后退队列,输出 该结点,若它有左子树,便将左子树根结点入队列,若它有右子树, 便将右子树根结点入队列,如此直到队列
8、空为止。因为队列的特点是先进先出,从而达到按层序遍历的I的。#define MAXLEN 100void translevel(BinTree b)struct nodeBinTree vecMAXLEN;int f, r;q; 定义队列q,f表示队头指针,r队尾指针q.f=O; 置队列为空队列q.r=O;if(b!=NULL) cout« b->data«H H;q.vecq.r=b;结点指针进入队列q.r=q.r+l;队尾指针后移b=q.vecq.f; 队头出队列q.f=q.f+l;if(b->lchild!=NULL) 输出左孩子,并入队列cout
9、1; b->lchild->data«H ”;q.vecq.r=b->lchild;q.r=q.r+l;if(b->rchild!=NULL)输出右孩子,并入队列cout« b->rchild->data«H ”;q.vecq.r=b->rchild;q.r=q.r+l;) int onechild(BinTree T)/求度为1的结点的个数if(T=NULL) return 0;elseif(T->lchild=NULL&&T->rchild!=NULLIIT->lchild!=NULL
10、 && T->rchild=NULL)return (onechild(T->Ichild)+onechild(T->rchild)+1);elsereturn (onechild(T->lchiId)+onechild(T->rchild);int leafs(BinTree T)int numl,num2;if(T=NULL) return 0;else if(T->lchild=NULL &&T->rchild =NULL) return 1;elsenuml=leafs(T->lchild);num2=leafs(T->rchild );return numl+num2;)GB8878185555334563盯9125XW创作编号丄创作者:凤呜大王*int twochild(BinTree T)int num0=0,num I jium2;if(T=NULL) return 0;else if(T->lchild!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 常州市溧阳中学高三地理一轮复习第三章(6)农业作业
- 3长城汽车公司概况及发展现状
- 2025年大学大三(传播学)网络传播基础试题及答案
- 2025年大学大三(教育心理学)课堂管理试题及答案
- 中职第二学年(会计)会计电算化实训2026年试题及答案
- 高一地理(能力强化)2025-2026年上学期考题及答案
- 2025年高职第二学年(工程造价)工程管理综合测试试题及答案
- 2025年中职护理(护理资料管理)试题及答案
- 2025年高职环境监测技术(噪声污染控制技术)试题及答案
- 2025年高职(煤炭清洁利用工程)煤炭加工测试试题及答案
- 弱电机房施工方案
- 2025版脑损伤常见症状及护理策略
- GB/T 39693.4-2025硫化橡胶或热塑性橡胶硬度的测定第4部分:用邵氏硬度计法(邵尔硬度)测定压入硬度
- 碳酸饮料课件
- 2025年青海省政府采购评审专家考试测试题及答案
- 光大银行北京市通州区2025秋招信息科技岗笔试题及答案
- 猎头顾问年终工作总结
- 园艺工培训课件
- 监理工作制度(水利工程)
- 2025版全新供用电合同发布
- 2025-2030农业环境监测技术应用现状与市场趋势预测报告
评论
0/150
提交评论