版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.2二叉树的基本操作PART1二叉树的建立一数组实现1.完全二叉树从二叉树的根节点开始,按从上而下、自左往右的顺序对n个节点进行编号,根节点的编号为0,最后一个节点的编号为n-1。然后依次将二叉树的节点用一组连续的数组元素来表示,节点编号与数组的下标一一对应。如图甲所示的完全二叉树所对应的一维数组表示如图乙所示。一数组实现2.非完全二叉树
对于非完全二叉树,先将它补全为一棵完全二叉树,补上的节点及分支用虚线表示,如图甲所示的一棵非完全二叉树补全为图乙所示的完全二叉树。然后将补全后的完全二叉树,从它的根节点开始,按从上而下、自左往右的顺序对n个节点进行编号,根节点的编号为0,最后一个节点的编号为n-1。如图丙所示,依次把完全二叉树中原二叉树的节点用一维数组的各个元素来表示,节点编号与数组的下标一一对应。若元素值为None,则节点为空节点。思考用数组表示的二叉树的方式更适合完全二叉树还是非完全二叉树?为什么?
【例1】已知二叉树T的形态如图所示,则其对应的一维数组表示为(
)练习A.bt=["A","B","C","D","E"]
B.bt=["A","B","C",None,"D",None,None,None,"E"]C.bt=["A","B","C",None,"D",None,None,None,None,"E"]D.bt=["A","B","C",None,"D",None,None,None,None,None,"E“]C练习A【举一反三1】已知完全二叉树T可用一维数组表示为bt=[“A”,“B”,“C”,“D”,“E”,“F”,“G”],则节点C的父节点为
,左孩子节点为
,右孩子节点为
(选填:字母A~G)。FG二链表实现由于二叉树的节点可能有两个孩子,即左孩子和右孩子,因此二叉树的节点至少需要3个域:一个数据域和两个指针域。两个指针域分别指向节点的左孩子和右孩子,这两个指针分别称为左指针和右指针,这样得到的链表也称为二叉链表。如图所示的是二叉树及其对应的二叉链表实现示意图。左指针数据右指针三list实现用嵌套列表list来实现二叉树(1)空树用None表示(2)非空二叉树用饱含三个元素的列表[d,l,r]表示,其中:d是根节点,r和l是左节点和右节点[“A”,,][“B”,“D”,“E”][“C”,None,None]二链表实现ABCGEIDFHList1=[‘A’,[‘B’,None,None],[‘C’,[‘D’,[‘F’,None,None],[‘G’,None,None]],[‘E’,[‘H’,None,None],[‘I’,None,None]]]]有如图所示的二叉树。用list表示该二叉树为(
)练习A.[‘a’,’b’,’d’,’c’,’e’]B.[‘a’,[‘b’,[‘c’,None,None],None],[‘d’,[‘e’]]]C.[‘a’,[‘b’,[‘c’]],[‘d’,[‘e’,None,None]]]D.[‘a’,[‘b’,[‘c’,None,None]],[‘d’,[‘e’,None,None]]]Dabcde练习【例2】已知二叉树T的形态如图所示,则其对应的嵌套列表为( )A.bt=["'A",["B",["D",["E",None,None],None]],["C",None,None]]B.bt=["A",["B",None,["D",["E",None,None],None]],["C",None,None]]C.bt=["A",["'B",None,["D",["E",None,Non]],["C",None,None]]D.bt=["A",["B",None,["D",["E",None,None],None]],["C"]]B练习【举一反三2】已知二叉树T可用一维数组表示为bt=["A","B","C",None,"D","E","F"],请根据二叉树的建立方法,回答下列问题:(1)请绘制出二叉树的形态图。(2)请写出该二叉树list实现方法的嵌套列表bt=['A',['B',None,['D',None,None]],['C',['E',None,None],['F',None,None]]]PART2二叉树的遍历一前序遍历规则:(中左右)先访问根节点,再访问左子树,最后访问右子树。如右图的前序遍历顺序为:A-B-D-H-E-C-F-I-G-J-KABCEGKFIJDH1245678910二中序遍历规则:(左中右)先访问左子树,再访问根节点,最后访问右子树。如右图的中序遍历顺序为:D-H-B-E-A-I-F-C-J-G-K。ABCEGKFIJDH12345689107三后序遍历规则:(左
右
中)先访问左子树,再访问右子树,最后访问根节点。如右图的后序遍历顺序为:H-D-E-B-I-F-J-K-G-C-AABCEGKFIJDH12345689107三后序遍历四二叉树的基本操作
计算表达式和逆波兰式用二叉树表示例如:计算表达式:8-(3+2*6)/5+4
用二叉树表示,如右图。+-4532/+*86计算表达式:中序遍历顺序逆波兰式:后序遍历顺序若用后序遍历,则它的顺序为:8326*+5/-4+------逆波兰式四二叉树的基本操作1.二叉树的唯一性例如:前序遍历:E-A-C-B-D-G-F
中序遍历:A-B-C-D-E-F-G
求其后序遍历顺序?先画出二叉树,再用后序遍历规则求出其输出顺序后序遍历:B-D-C-A-F-G-EEACBDGFABCDEFGEABCDFGGFABCDCBD四二叉树的基本操作1.二叉树的唯一性练习:
后序遍历:H-D-E-B-I-F-J-K-G-C-A
中序遍历:D-H-B-E-A-I-F-C-J-G-K
求其前序遍历顺序?
A-B-D-H-E-C-F-I-G-J-K四二叉树的基本操作思考:前序遍历序列和后序遍历序列能否唯一确定一棵子树?前序序列:A-B后序序列:B-AABAB练习A一棵二叉树的先序遍历序列为A-B-C-D-E-F,中序遍历序列为C-BA-E-D-F,则后序遍历序列为(
)A.A-C-B-E-DB.D-E-C-B-AC.D-E-A-B-CD.C-E-D-B-A练习B一棵二叉树的前序遍历序列是A-B-D-E-C-F-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华师大版初中科学8.2气温、湿度和降水
- 工程与施工管理制度
- 公司各级职位权责分工制度
- 2024年百色客运资格证考试答题
- 2024年b2客运从业资格证
- 2024年镇江道路运输客运从业资格证模拟考试
- 2024年潍坊a1客运资格证
- 2024年山西客运从业资格证的考试题目是什么题
- 2024年莆田资格证客运题库
- 2023年北京市初三二模道德与法治试题汇编:走向未来的少年章节综合
- 酒店装饰装修工程验收表
- 新北师大版六年级上册数学全册教案(教学设计)
- 呼吸科(呼吸与危重症医学科)出科理论试题及答案
- 调研报告:关于棚户区改造现状、存在问题及对策建议
- 技工学校教师工作规范
- 2022年医院关于缩短患者平均住院日的管理规定
- 清新个人工作述职报告PPT模板
- GWJ 006-2016 超短波频段监测基础数据存储结构技术规范
- 工程管理之工程项目风险管理(PPT)
- 天空地一体化态势感知云平台建设方案
- 液压技术课程设计拉床的液压动力滑台的液压系统设计
评论
0/150
提交评论