数据结构(CC++语言版)第五章树和二叉树课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构(CC++语言版)第五章树和二叉树课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 CC 语言版 第五 二叉 课件
- 资源描述:
-
1、数据结构(CC+语言版)第五章 树和二叉树21.熟练掌握二叉树的结构特性二叉树的结构特性,了解相应的证明方法。2.熟悉二叉树的各种存储结构存储结构的特点及适用范围。3.遍历二叉树遍历二叉树是二叉树各种操作的基础,掌握各种遍历策略 的递归算法递归算法,灵活运用遍历算法灵活运用遍历算法实现二叉树的其它操作。4.熟悉树的树的各种存储结构存储结构及其特点,掌握树和森林与二叉树树和森林与二叉树的转换的转换方法。5.学会编写实现树的各种操作实现树的各种操作的算法。6.了解最优树的特性最优树的特性,掌握建立最优树和哈夫曼编码建立最优树和哈夫曼编码的方法。3 1、若一棵树中度为、若一棵树中度为1的结点有的结点
2、有n1个,度为个,度为2的结点有的结点有n2个,个,度为,度为m的结点有的结点有nm个,它有多少个叶结点?个,它有多少个叶结点?2、找出所有的二叉树,其结点在下列两种次序下恰好都以、找出所有的二叉树,其结点在下列两种次序下恰好都以同样的顺序出现:同样的顺序出现:(1)先根和中根)先根和中根(2)先根和后根()先根和后根(3)中根和后根)中根和后根3、设计一个算法,根据一个二叉树结点的先根序列和中根、设计一个算法,根据一个二叉树结点的先根序列和中根序列构造出该二叉树。假设二叉树是链接表示的,并且任意序列构造出该二叉树。假设二叉树是链接表示的,并且任意两个结点的两个结点的info字段值都不同。字段
3、值都不同。4、设计一个算法,将一个链接表示的二叉树中每个结点的、设计一个算法,将一个链接表示的二叉树中每个结点的左、右子女位置交换。左、右子女位置交换。5、设计一个算法,按层次顺序输出二叉树中的所有结点,、设计一个算法,按层次顺序输出二叉树中的所有结点,要求同一层上的结点从左到右输出。要求同一层上的结点从左到右输出。6、设、设F是一个森林,是一个森林,B是与是与F对应的二叉树。试问,对应的二叉树。试问,F中非叶中非叶结点的个数和结点的个数和B中右子树为空的结点的个数之间有什么数量中右子树为空的结点的个数之间有什么数量关系?关系?4 树的存储方法主要有哪些?举例说明树的存储方法主要有哪些?举例说
4、明具体存储结构。具体存储结构。5树的定义树的定义树:树:n(n0)个个结点结点的有限的有限集合集合。当。当n0时,称为时,称为空树;任意一棵非空树满足以下条件:空树;任意一棵非空树满足以下条件:有且仅有一个特定的称为有且仅有一个特定的称为根根的结点;的结点;当当n1时,除根结点之外的其余结点被分成时,除根结点之外的其余结点被分成m(m0)个个互不相交互不相交的有限集合的有限集合T1,T2,Tm,其中其中每个集合又是一棵树,并称为这个根结点的每个集合又是一棵树,并称为这个根结点的子树子树。5.1 树的逻辑结构树的逻辑结构树的定义是采用递归方法树的定义是采用递归方法65.1 树的逻辑结构树的逻辑结
5、构CGBDE FK LHMIJA7CGBDEFKLHMIJA5.1 树的逻辑结构树的逻辑结构85.1 树的逻辑结构树的逻辑结构CGBDEFKLHMIJA91 1层层2层层4 4层层3层层高度高度4CGBDEFKLHMIJC5.1 树的逻辑结构树的逻辑结构10CBDEFKLHJA712345689105.1 树的逻辑结构树的逻辑结构11数据结构中讨论的一般都是有序树数据结构中讨论的一般都是有序树 5.1 树的逻辑结构树的逻辑结构ACBGFEDACBGFED12CBDEFKLHJ5.1 树的逻辑结构树的逻辑结构A135.1 树的逻辑结构树的逻辑结构ACBGFEDDAECFBG14线性结构线性结构树
6、结构树结构第第一一个数据元素个数据元素根结点(只有根结点(只有一一个)个)无前驱无前驱无双亲无双亲最后最后一一个数据元素个数据元素叶子结点叶子结点(可以有可以有多多个个)无后继无后继无孩子无孩子其它数据元素其它数据元素其它结点其它结点一个前驱一个前驱,一个后继一个后继一个双亲一个双亲,多个孩子多个孩子一对一一对一 一对多一对多5.1 树的逻辑结构树的逻辑结构155.1 树的逻辑结构树的逻辑结构数据对象数据对象 D:D是具有相同特性的数据元素的集合。是具有相同特性的数据元素的集合。若若D为空集,则称为空树;为空集,则称为空树;否则否则:(1)在在D中存在唯一的称为根的数据元素中存在唯一的称为根的
7、数据元素root,(2)当当n1时,其余结点可分为时,其余结点可分为m(m0)个互不相个互不相交的有限集交的有限集T1,T2,Tm,其中每一棵子集本身又是其中每一棵子集本身又是一棵符合本定义的树,称为根一棵符合本定义的树,称为根root的子树。的子树。数据关系数据关系 R:16A(B(E,F(K,L),C(G),D(H,I,J(M)T1T3T2树根 (b)(a)上面是树的广义表表示形式 例如:例如:1718树的遍历操作树的遍历操作 树的遍历:树的遍历:从从根根结点出发,按照某种结点出发,按照某种次次序访问序访问树中树中所有结点,使得每个结点被访问一次且仅被访问一所有结点,使得每个结点被访问一次
8、且仅被访问一次。次。如何理解如何理解访问访问?抽象抽象操作,操作,可以是对结点进行的各种处理,这里可以是对结点进行的各种处理,这里简简化为输出结点的数据。化为输出结点的数据。如何理解如何理解次序次序?树通常有前序(根)遍历、后序(根)遍历和层树通常有前序(根)遍历、后序(根)遍历和层序(次)遍历三种方式。序(次)遍历三种方式。5.1 树的逻辑结构树的逻辑结构树结构(非线性结构)树结构(非线性结构)线性结构。线性结构。遍历的实质遍历的实质?19前序遍历前序遍历 树的前序遍历操作定义为:树的前序遍历操作定义为:若树为空,则空操作返回;若树为空,则空操作返回;否则否则 访问根结点;访问根结点;按照从
9、左到右的顺序前序按照从左到右的顺序前序遍历根结点的每一棵子树。遍历根结点的每一棵子树。5.1 树的逻辑结构树的逻辑结构前序遍历序列:前序遍历序列:A B D E H I F C GACBGFEDHI20后序遍历后序遍历 树的后序遍历操作定义为:树的后序遍历操作定义为:若树为空,则空操作返回;若树为空,则空操作返回;否则否则 按照从左到右的顺序后序按照从左到右的顺序后序遍历根结点的每一棵子树;遍历根结点的每一棵子树;访问根结点。访问根结点。5.1 树的逻辑结构树的逻辑结构后序遍历序列:后序遍历序列:D H I E F B G C AACBGFEDHI21层序遍历层序遍历 树的层序遍历操作定义为:
10、树的层序遍历操作定义为:从树的第一层(即根结点)从树的第一层(即根结点)开开始,自上而下逐层遍历,始,自上而下逐层遍历,在同一层中,按从左到右的在同一层中,按从左到右的顺序对结点逐个访问。顺序对结点逐个访问。5.1 树的逻辑结构树的逻辑结构层序遍历序列:层序遍历序列:A B C D E F G H IACBGFEDHI225.2 树的存储结构树的存储结构实现树的存储结构,关键是什么实现树的存储结构,关键是什么?什么是存储结构什么是存储结构?树中结点之间的逻辑关系是什么树中结点之间的逻辑关系是什么?思考问题的出发点:如何表示结点的双亲和孩子思考问题的出发点:如何表示结点的双亲和孩子如何表示树中结
11、点之间的逻辑关系。如何表示树中结点之间的逻辑关系。数据元素以及数据元素之间的数据元素以及数据元素之间的逻辑关系逻辑关系在存储器在存储器中的表示。中的表示。23下标下标 data parent012345678 A -1 B 0 C 0 D 1 E 1 F 1 G 2 H 2 I 4 5.2 树的存储结构树的存储结构 ACBHFEDGI24012345678下标下标 data firstchild A B C D E F G H I 5.2 树的存储结构树的存储结构12 345 7 68 ACBHFEDGI255.2 树的存储结构树的存储结构012345678 A -1 B 0 C 0 D 1
12、E 1 F 1 G 2 H 2 I 4 data parent firstchild12 345 7 68 ACBHFEDGI265.2 树的存储结构树的存储结构 A B C D E F G H IACBHFEDGI27二叉树的定义二叉树的定义 二叉树是二叉树是n(n0)个结点的有限集合,该集合或个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点者为空集(称为空二叉树),或者由一个根结点和两棵和两棵互不相交互不相交的、分别称为根结点的的、分别称为根结点的左子树左子树和和右子树右子树的二叉树组成。的二叉树组成。5.3 二叉树的逻辑结构二叉树的逻辑结构问题转化:将树转换为二叉树,
13、从而利用二叉树解问题转化:将树转换为二叉树,从而利用二叉树解决树的有关问题。决树的有关问题。研究二叉树的意义?研究二叉树的意义?285.3 二叉树的逻辑结构二叉树的逻辑结构ABCDEFGABAB29二叉树的基本形态二叉树的基本形态空二叉树空二叉树只有一个根结点只有一个根结点左子树左子树根结点只有左子树根结点只有左子树右子树右子树根结点只有右子树根结点只有右子树左子树左子树右子树右子树根结点同时有左右子树根结点同时有左右子树5.3 二叉树的逻辑结构二叉树的逻辑结构305.3 二叉树的逻辑结构二叉树的逻辑结构31特殊的二叉树特殊的二叉树斜树斜树1.所所有结点都只有左子有结点都只有左子树的二叉树称为
14、树的二叉树称为左斜树左斜树;2.所有结点都只所有结点都只有右子有右子树的二叉树称为树的二叉树称为右斜树右斜树;3.3.左斜树和右斜树统称为左斜树和右斜树统称为斜树斜树。1.在斜树中,每一层只有一个结点;在斜树中,每一层只有一个结点;2.斜树的结点个数与其深度相同。斜树的结点个数与其深度相同。5.3 二叉树的逻辑结构二叉树的逻辑结构斜树的特点:斜树的特点:ABCABC32满二叉树满二叉树在一棵二叉树中,如果所在一棵二叉树中,如果所有分支结点都存在左子树有分支结点都存在左子树和右子树,并且所有叶子和右子树,并且所有叶子都在都在同一层上。同一层上。满二叉树的特点满二叉树的特点:叶子只能出现在最下一层
15、;叶子只能出现在最下一层;只有度为只有度为0和度为和度为2的结点。的结点。5.3 二叉树的逻辑结构二叉树的逻辑结构特殊的二叉树特殊的二叉树A15234678910BCDEFGHIJKLM NO1112 13 14 15335.3 二叉树的逻辑结构二叉树的逻辑结构A1523467BCDEFGLM89345.3 二叉树的逻辑结构二叉树的逻辑结构A15234678910BCDEFGHIJKLM NO1112 13 14 15A15234678910BCDEFGHIJ35在满二叉树中,从最后在满二叉树中,从最后一个结点开始,一个结点开始,连续连续去去掉掉任意任意个结点,即是一个结点,即是一棵完全二叉树
16、。棵完全二叉树。5.3 二叉树的逻辑结构二叉树的逻辑结构A1523467910BCDEFGHIJK11L12M13N14O158A15234678910BCDEFGHIJ特殊的二叉树特殊的二叉树365.3 二叉树的逻辑结构二叉树的逻辑结构A15234678910BCDEFGHIJ37二叉树的基本性质二叉树的基本性质5.3 二叉树的逻辑结构二叉树的逻辑结构A15234678910BCDEFGHIJ385.3 二叉树的逻辑结构二叉树的逻辑结构二叉树的基本性质二叉树的基本性质 A15234678910BCDEFGHIJ39n0+n1+n2=n1+2*n2+1 n0=n2+15.3 二叉树的逻辑结构二
17、叉树的逻辑结构二叉树的基本性质二叉树的基本性质 405.3 二叉树的逻辑结构二叉树的逻辑结构二叉树的基本性质二叉树的基本性质 A15234678910BCDEFGHIJKLM NO1112 13 14 15415.3 二叉树的逻辑结构二叉树的逻辑结构二叉树的基本性质二叉树的基本性质 42 具有具有n个结点的完全二叉树的深度为个结点的完全二叉树的深度为 log2n +1。5.3 二叉树的逻辑结构二叉树的逻辑结构 2k-1-12k-12k-1第第k-1层层第第k层层最少结点数最少结点数最多结点数最多结点数完全二叉树的基本性质完全二叉树的基本性质 43 5.3 二叉树的逻辑结构二叉树的逻辑结构log
18、2n+1log2nlog2nlog2n+1k所在区间所在区间完全二叉树的基本性质完全二叉树的基本性质 对不等式取对数,有:对不等式取对数,有:k-1log2nk即:即:log2nklog2n+1由于由于k是整数,故必有是整数,故必有k log2n+1。445.3 二叉树的逻辑结构二叉树的逻辑结构完全二叉树的基本性质完全二叉树的基本性质 4518910456723对一棵具有对一棵具有n个结点的完全个结点的完全二叉树中从二叉树中从1开始按层序编开始按层序编号,则号,则l 结点结点i的双亲结点为的双亲结点为 i/2;l 结点结点i的左孩子为的左孩子为2i;l 结点结点i的右孩子为的右孩子为2i1。5
19、.3 二叉树的逻辑结构二叉树的逻辑结构性质性质6表明,在完全二叉树中,结点的层序编号反映表明,在完全二叉树中,结点的层序编号反映了结点之间的逻辑关系。了结点之间的逻辑关系。完全二叉树的基本性质完全二叉树的基本性质 46二叉树的抽象数据类型定义二叉树的抽象数据类型定义查书查书5.3 二叉树的逻辑结构二叉树的逻辑结构 二叉树的主要基本操作二叉树的主要基本操作:查查 找找 类类 插插 入入 类类 删删 除除 类类47二叉树的遍历操作二叉树的遍历操作 二叉树的遍历是指从根结点出发,按照某种二叉树的遍历是指从根结点出发,按照某种次序次序访问二叉树中的所有结点,使得每个结点被访问一访问二叉树中的所有结点,
20、使得每个结点被访问一次且仅被次且仅被访问访问一次。一次。二叉树遍历操作的结果?二叉树遍历操作的结果?非线性结构线性化非线性结构线性化5.3 二叉树的逻辑结构二叉树的逻辑结构抽象操作,抽象操作,可以是对结点进行的各种可以是对结点进行的各种处理,这里处理,这里简化为输出结点的数据。简化为输出结点的数据。前序遍历前序遍历中序遍历中序遍历后序遍历后序遍历层序遍历层序遍历 48如果限定先左后右,则二叉树遍历方式有三种:如果限定先左后右,则二叉树遍历方式有三种:前序前序:DLR中序中序:LDR后序后序:LRD层序遍历层序遍历:按二叉树的层序编号的次序访问各结点。:按二叉树的层序编号的次序访问各结点。5.3
21、 二叉树的逻辑结构二叉树的逻辑结构考虑二叉树的组成:考虑二叉树的组成:根结点根结点D左子树左子树L右子树右子树R二二叉叉树树495.3 二叉树的逻辑结构二叉树的逻辑结构前序遍历序列:前序遍历序列:A B D G C E FABCDEFG二叉树的遍历操作二叉树的遍历操作 505.3 二叉树的逻辑结构二叉树的逻辑结构中序遍历序列:中序遍历序列:D G B A E C FABCDEFG二叉树的遍历操作二叉树的遍历操作 515.3 二叉树的逻辑结构二叉树的逻辑结构后序遍历序列:后序遍历序列:G D B E F C AABCDEFG二叉树的遍历操作二叉树的遍历操作 525.3 二叉树的逻辑结构二叉树的逻
22、辑结构层序遍历序列:层序遍历序列:A B C D E F GABCDEFG二叉树的遍历操作二叉树的遍历操作 535.3 二叉树的逻辑结构二叉树的逻辑结构ABCABC二叉树的遍历操作二叉树的遍历操作 545.3 二叉树的逻辑结构二叉树的逻辑结构ABCABC二叉树的遍历操作二叉树的遍历操作 555.3 二叉树的逻辑结构二叉树的逻辑结构二叉树的遍历操作二叉树的遍历操作 561.根据前序序列的第一个元素建立根结点;根据前序序列的第一个元素建立根结点;2.在中序序列中找到该元素,确定根结点的左右子树在中序序列中找到该元素,确定根结点的左右子树的中序序列;的中序序列;3.在前序序列中确定左右子树的前序序列
23、;在前序序列中确定左右子树的前序序列;4.由左子树的前序序列和中序序列建立左子树;由左子树的前序序列和中序序列建立左子树;5.由右子树的前序序列和中序序列建立右子树。由右子树的前序序列和中序序列建立右子树。5.3 二叉树的逻辑结构二叉树的逻辑结构已知一棵二叉树的前序序列和中序序列,构造该已知一棵二叉树的前序序列和中序序列,构造该二叉树的过程如下:二叉树的过程如下:二叉树的遍历操作二叉树的遍历操作 57顺序存储结构顺序存储结构二叉树的顺序存储结构就是用一维数组存储二叉树二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的中的结点,并且结点的存储位存储位置置(下标)应能体现(下标)应能
24、体现结点之间的结点之间的逻辑关系逻辑关系父子关系。父子关系。如何利用数组下标来反映结点之间的逻辑关系如何利用数组下标来反映结点之间的逻辑关系?完全二叉树完全二叉树和和满二叉树满二叉树中结点的序号可以唯一中结点的序号可以唯一地反映出结点之间的逻辑关系地反映出结点之间的逻辑关系。5.4 二叉树的存储结构及实现二叉树的存储结构及实现58 A B C D E F G H I J数组下标数组下标 1 2 3 4 5 6 7 8 9 10完全二叉树的顺序存储完全二叉树的顺序存储5.4 二叉树的存储结构及实现二叉树的存储结构及实现A15234678910BCDEFGHIJ以编号以编号为下标为下标59二叉树的
25、顺序存储二叉树的顺序存储ABC DE F G数组下标数组下标 1 2 3 4 5 6 7 8 9 10 11 12 135.4 二叉树的存储结构及实现二叉树的存储结构及实现ABCDFGE以编号以编号为下标为下标ABCDFGE123561013按照完全按照完全二叉树编号二叉树编号60一棵斜树的顺序存储会怎样呢?一棵斜树的顺序存储会怎样呢?深度为深度为k的右斜树,的右斜树,k个结点需分配个结点需分配2k1个存储单元。个存储单元。一棵二叉树改造后成完一棵二叉树改造后成完全二叉树形态,需增加全二叉树形态,需增加很多空结点,造成存储很多空结点,造成存储空间的浪费。空间的浪费。5.4 二叉树的存储结构及实
展开阅读全文