版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容二叉树的遍历二叉树的创建二叉树遍历的应用二叉树的遍历二叉树的遍历是指按一定次序访问二叉树中的每个结点,且每个结点仅被访问一次。在二叉树的遍历过程中不要将整棵树看成是由多个结点组成,而要看成是由根、左子树、右子树组成。ACBDGFEAA的左子树A的右子树递归的思想若限定先左后右的次序,则二叉树的遍历可有以下三种顺序:前序遍历(根->左子树->右子树)中序遍历(左子树->根->右子树)后序遍历(左子树->右子树->根)按层遍历:对二叉树按照从上至下,每层按照从左至右的顺序进行遍历。(不常用)A左=B(B左)(B右)A右=C(C左)(C右)=C(C左)前序遍历(根左右)ACBDGFEBDECGFT=A(A左)(A右)=A
B(B左)(B右)C(C左)A右A左D(B左)E(B右)B左=D(D左)(D右)=DB右=E(E左)(E右)=EGF(C左)C左=F(F左)(F右)=F(F右)G(F右)F右=G(G左)(G右)=GT=A
B(B左)(B右)C(C左)=ABDECFGA左=(B左)B(B右)A右=
(C左)C(C右)=(C左)C
中序遍历(左根右)ACBDGFEBDECGFT=(A左)A(A右)=(B左)B(B右)A(C左)CA右A左D(B左)E(B右)B左=(D左)D(D右)=DB右=
(E左)E(E右)=EGF(C左)C左=(F左)F(F右)=F(F右)G(F右)F右=(G左)G(G右)=GT=(B左)B(B右)A(C左)C=DBEAFGCA左=(B左)(B右)BA右=
(C左)(C右)C
=(C左)C
后序遍历(左右根)ACBDGFEBDECGFT=(A左)(A右)A=(B左)(B右)B(C左)CAA右A左D(B左)E(B右)B左=(D左)(D右)D=DB右=
(E左)(E右)E=EGF(C左)C左=(F左)(F右)F
=(F右)FG(F右)F右=(G左)(G右)G=GT=(B左)(B右)B(C左)CA=DEBGFCA【例】写出下面二叉树的前序、中序和后序遍历序列。前序:ABDFGCEH中序:BFDGAEHC后序:FGDBHECAACBDHEFG前序遍历(根左右)ACBDHEFGAA左子树A右子树BB右子树DFGCC左子树EH中序遍历(左根右)ACBDHEFGAA左子树A右子树BB右子树DFGCC左子树EH后序遍历(左右根)ACBDHEFGAA左子树A右子树BB右子树DFGCC左子树EH【例】已知一颗二叉树的后序遍历序列和中序遍历序列分别为EBDCA和BEADC,试画出这颗二叉树。思路:由任意一个遍历序列均不能惟一确定一颗 二叉树,只有知道中序和后序或中序和前
序遍历序列才能惟一确定一颗二叉树。确定方法:由前序(或后序)遍历序列确定树或 子树的根,再由中序遍历序列确定根 的左子树和右子树。ABCDE后序遍历序列:EBDCA(左右根)中序遍历序列:BEADC(左根右)AAEBBBEBCC确定方法:由前序(或后序)序列确定根再由中序序列确定左、右子树的范围练习:已知一颗二叉树的先序遍历序列和中序遍历序列分别为ABCDEFG和CBEDAFG,试画出这颗二叉树。
若二叉树非空,则按以下次序进行(递归)遍历:访问根结点;前序遍历根结点的左子树;前序遍历根结点的右子树。voidPreOrder(BTNode*root){ if(root!=NULL){
cout<<root->data;
//访问根 PreOrder(root->lchild);//前序遍历左子树 PreOrder(root->rchild);//前序遍历右子树 }
} ACDEFBG^^^^^^^^T前序遍历算法ABDECFG中序遍历算法若二叉树非空则按以下次序进行(递归)遍历:中序遍历根结点的左子树;访问根结点;中序遍历根结点的右子树。voidInOrder(BTNode*root){ if(root!=NULL){InOrder(root->lchild);//中序遍历左子树
cout<<root->data;
//访问根 InOrder(root->rchild);//中序遍历右子树 }
} 后序遍历算法若二叉树非空则按以下次序进行(递归)遍历:后序遍历根结点的左子树;后序遍历根结点的右子树;访问根结点。voidPostOrder(BTNode*root){ if(root!=NULL){PostOrder(root->lchild);//后序遍历左子树
PostOrder(root->rchild);//后序遍历右子树
cout<<root->data;
//访问根
}
} 建立二叉树统计二叉树中结点总数计算二叉树深度查找二叉树中值为item的结点清空二叉树二叉树的遍历的应用以二叉树的某种遍历序列建立二叉树voidCreateBTree_Pre(BTNode*&root){//要求按照前序遍历序列输入结点值item
charitem;
cin>>item; if(item=='#')//如果读入#字符,创建空树
{root=NULL;return;}else{
root=newBTNode;root->data=item; CreateBTree_Pre(root->lchild);//建左子树
CreateBTree_Pre(root->rchild);//建右子树
}}练习:请画出通过先序遍历CreateBTree_Pre按下列次序输入字符时ABC##DE#G##F###创建的二叉树。ABCDEGF统计二叉树中结点总数左子树结点数+右子树结点数+1(根结点)intBTreeCount(BTNode*root){ if(root==NULL)return0;//空树的结点数为0 else returnBiTreeCount(root->lchild)+BiTreeCount(root->rchild)+1;}计算二叉树深度左、右子树中深度较大的子树深度+1intBTreeDepth(BTNode*root){if(root==NULL)return0;else{intdepl=BTreeDepth(root->lchild);intdepr=BTreeDepth(root->rchild);if(depl>depr)returndepl+1;elsereturndepr+1;}}查找二叉树中值为item的结点BTNode*FindBTree(BTNode*root,DataTypeitem){if(root==NULL)returnNULL;if(root->data==item)returnroot;BTNode*p=FindBTree(root->lchild,item);if(p!=NULL)returnp;elsereturnFindBTree(root->rchild,item);}清空二叉树释放二叉树中所有结点voidCl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园教师游戏指导能力提升路径研究-基于2024年指导能力测评与提升策略
- 电气工程基础
- 浙江省2025年广播电视编辑记者、播音员主持人资格考试(广播电视基础知识)模拟试题
- 建筑幕墙结构胶老化检测评估技术指南
- 2026年四川省评标专家考试(交通类)复习题及答案
- 新闻记者考试(新闻采编实务)试题及答案(鸡西2025年)
- 【广东】2025年高考广东卷政治高考真题文档版
- 2022年1月福建省地理高中学生学业基础会考
- 2025年岳阳市云溪区事业单位集中选调工作人员考试真题及答案
- 液晶投影机企业县域市场拓展与下沉战略分析报告
- 2026年重庆烟草招聘考试试题及答案
- 2026年城管协管员业务知识考试题库及答案
- 2026年哈三中高三下学期三模语文试卷及答案
- 肠造口患者的心理支持与调适
- 河南省2026年普通高等学校对口招收中等职业学校毕业生考试机电与制造类基础课试卷
- 2025年广东省深圳市初二学业水平地生会考试题题库(答案+解析)
- 2026年度春季江西金德铅业股份有限公司校园招聘17人建设考试备考试题及答案解析
- 2025福建龙岩国信物业有限公司招聘5人笔试历年难易错考点试卷带答案解析
- 球墨铸铁管监理实施细则
- 2026中考英语时文热点:跨学科融合阅读 练习(含解析)
- 2025年全国初中应用物理竞赛试题及答案
评论
0/150
提交评论