第六章-树与二叉树课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第六章-树与二叉树课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 二叉 课件
- 资源描述:
-
1、学习提示学习提示q 基本内容基本内容 二叉树的定义、性质和存储结构二叉树的定义、性质和存储结构;二叉树的遍历和线索化以及二叉树的遍历和线索化以及遍历算法的各种描述形式遍历算法的各种描述形式;树和森林的定义、存储结构与二叉树树和森林的定义、存储结构与二叉树的转换、遍历的转换、遍历;树的多种应用。树的多种应用。q 教学目的教学目的1 1、熟练掌握二叉树的结构特性,了解相应的证明方法。、熟练掌握二叉树的结构特性,了解相应的证明方法。2 2、熟悉二叉树的各种存储结构的特点及适用范围。、熟悉二叉树的各种存储结构的特点及适用范围。3 3、遍历二叉树、线索二叉树。、遍历二叉树、线索二叉树。4 4、熟练掌握二
2、叉树的线索化过程及在中序线索化树上找给定结点、熟练掌握二叉树的线索化过程及在中序线索化树上找给定结点的前驱和后继的方法。的前驱和后继的方法。5 5、熟悉树的各种存储结构及其特点,掌握树和森林与二叉树的转、熟悉树的各种存储结构及其特点,掌握树和森林与二叉树的转换方法。换方法。6 6、了解最优树的特性,掌握建立最优树和赫夫曼编码的方法。、了解最优树的特性,掌握建立最优树和赫夫曼编码的方法。q 教学重点:教学重点:树与二叉树的概念和基本术语、存储结构、二叉树性质、二叉树与二叉树的概念和基本术语、存储结构、二叉树性质、二叉树遍历、树与二叉树的转换、赫夫曼编码设计树遍历、树与二叉树的转换、赫夫曼编码设计
3、q 教学难点:教学难点:线索二叉树、树与二叉树遍历非递归算法的实现、线索二叉树、树与二叉树遍历非递归算法的实现、树的基本操作的实现、赫夫曼树及其应用树的基本操作的实现、赫夫曼树及其应用 学习纲要学习纲要 6.1 6.1 树的定义和基本概念树的定义和基本概念 6.2 6.2 二叉树(二叉树(本课程的重点内容之一本课程的重点内容之一)6.2.1 6.2.1 二叉树的定义和基本术语二叉树的定义和基本术语 6.2.2 6.2.2 二叉树的性质二叉树的性质 6.2.3 6.2.3 二叉树的存储结构二叉树的存储结构 6.3 6.3 遍历二叉树和线索二叉树遍历二叉树和线索二叉树 6.3.1 6.3.1 遍历
4、二叉树遍历二叉树 6.3.2 6.3.2 线索二叉树线索二叉树 6.4 6.4 树和森林树和森林 6.4.1 6.4.1 树的存储结构树的存储结构 6.4.2 6.4.2 森林与二叉树的转换森林与二叉树的转换 6.4.3 6.4.3树和森林的遍历树和森林的遍历 6.5 6.5 赫夫曼树及其应用赫夫曼树及其应用 6.5.1 6.5.1 最优二叉树(赫夫曼树)最优二叉树(赫夫曼树)6.5.2 6.5.2 赫夫曼编码赫夫曼编码学习纲要学习纲要 树型结构树型结构是一类重要的非线性结构。是一类重要的非线性结构。树型结构树型结构是结点之间有分支,并且具有是结点之间有分支,并且具有层次关系层次关系的结构。的
5、结构。(直观来看)(直观来看)树型结构的逻辑特征树型结构的逻辑特征树中任一结点都可以有树中任一结点都可以有零个零个或或多个多个后继后继结点,但结点,但至多至多只能有一个只能有一个前趋前趋结点,只有结点,只有根根结点无前趋,结点无前趋,叶子叶子结点无后继。结点无后继。最为常用的树型结构最为常用的树型结构树二叉树6.1 6.1 树的定义和基本术语树的定义和基本术语ACGBDE FK LHMIJ6.1 6.1 树的基本概念及相关术语树的基本概念及相关术语 一、树的定义一、树的定义 定义:树定义:树(Tree)(Tree)是是n(n=0)n(n=0)个个结点结点的有限集的有限集T T,n=0n=0时称
6、为时称为空空树,否则对任意一棵非空树,树,否则对任意一棵非空树,它满足如下两个条件:它满足如下两个条件:6.1 6.1 树的定义和基本术语树的定义和基本术语ACGBDE FKLHMIJ(1)有且仅有一个特定的称)有且仅有一个特定的称为为根根(Root)的结点;的结点;(2)其余的结点可分为其余的结点可分为m(m0)个个互不相交互不相交的子集的子集T1,T2,T3Tm,其中每个子,其中每个子集又是一棵树,并称其为根的集又是一棵树,并称其为根的子树子树(Subtree)。树的定义是采用递归方法树的定义是采用递归方法6.1 6.1 树的定义和基本术语树的定义和基本术语(a)一棵树结构一棵树结构 (b
7、)一个非树结构一个非树结构 (c)一个非树结构一个非树结构 一、树的定义一、树的定义ACBGFEDHIACBGFDACBGFDE6.1 6.1 树的定义和基本术语树的定义和基本术语树的应用举例树的应用举例文件结构文件结构My ComputerC:D:E:etcWINDOWSProgram FilesPictureMusic6.1 6.1 树的定义和基本术语树的定义和基本术语ACGBDEFKLHMIJ二、树的特点二、树的特点6.1 6.1 树的定义和基本术语树的定义和基本术语三、树的基本术语三、树的基本术语结点的度:结点的度:结点所拥有的子树的个数。结点所拥有的子树的个数。树的度:树的度:树中各
8、结点度的最大值。树中各结点度的最大值。CGBDEFKLHMIJA6.1 6.1 树的定义和基本术语树的定义和基本术语三、树的基本术语三、树的基本术语叶子结点:叶子结点:度为度为0的结点,也称为终端结点。的结点,也称为终端结点。分支结点:分支结点:度不为度不为0的结点,也称为非终端结点。的结点,也称为非终端结点。CGBDEFKLHMIJA6.1 6.1 树的定义和基本术语树的定义和基本术语三、树的基本术语三、树的基本术语孩子、双亲:孩子、双亲:树中某结点子树的根结点称为这个树中某结点子树的根结点称为这个结点的结点的孩子结点孩子结点,这个结点称为它孩子结点的,这个结点称为它孩子结点的双双亲结点亲结
9、点;兄弟:兄弟:具有同一个双亲的孩子结点互称为兄弟。具有同一个双亲的孩子结点互称为兄弟。CGBDEFKLHMIJA6.1 6.1 树的定义和基本术语树的定义和基本术语三、树的基本术语三、树的基本术语路径:路径:如果树的结点序列如果树的结点序列n1,n2,nk有如下关有如下关系:结点系:结点ni是是ni+1的双亲(的双亲(1=i=0)n(n=0)个结点的有限集合,此个结点的有限集合,此集合或者为空集(集合或者为空集(n=0n=0),或者由一个),或者由一个根根结点结点及及两棵互不相交的左右子树两棵互不相交的左右子树组成,并组成,并且左右子树都是二叉树。且左右子树都是二叉树。123485679 1
10、06.2 6.2 二叉树二叉树 二、二叉树的特点二、二叉树的特点1.1.每个结点至多只有二棵子树(即二叉每个结点至多只有二棵子树(即二叉树中不存在度大于树中不存在度大于2 2的结点的结点););2.2.该两棵子树可以为空该两棵子树可以为空;3.3.该两棵子树有次序之分,分别称之为该两棵子树有次序之分,分别称之为左子树和右子树左子树和右子树,其次序不能任意颠倒。其次序不能任意颠倒。123485679 10ABAB6.2 6.2 二叉树二叉树 (a)空二叉树空二叉树 (b)仅有根结仅有根结点的二叉点的二叉树树 (c)右子树为右子树为空的二叉空的二叉树树L (d)左子树为空的左子树为空的二叉树二叉树
11、R (e)左、右子树均非左、右子树均非空的二叉树空的二叉树LR三、二叉树的基本形态三、二叉树的基本形态6.2 6.2 二叉树二叉树a ab bc cd de e(a)a ac cd de eb b(b)b bc cd de ea a(c)四、二叉树与树和有序树的区别四、二叉树与树和有序树的区别6.2 6.2 二叉树二叉树二叉树与树的区别:二叉树与树的区别:A A树中结点的最大度数没有限制,二叉树树中结点的最大度数没有限制,二叉树结点最大度数为结点最大度数为2 2。B B树的每个结点的子树无左、右之分,二树的每个结点的子树无左、右之分,二叉树的结点子树有明确的左、右之分。叉树的结点子树有明确的左
12、、右之分。二叉树与有序树的区别:二叉树与有序树的区别:C.C.在有序树中,某个结点只有一个孩子时就在有序树中,某个结点只有一个孩子时就无左、右之分无左、右之分 特别要注意:特别要注意:二叉树不是树的特殊情况,它二叉树不是树的特殊情况,它们是两种不同的树型结构。们是两种不同的树型结构。四、二叉树与树和有序树的区别四、二叉树与树和有序树的区别练习:画出含有练习:画出含有3 3个结点的树与二叉树的所有个结点的树与二叉树的所有不同形态不同形态 树树 二叉树二叉树6.2 6.2 二叉树二叉树特殊的二叉树特殊的二叉树斜树斜树1.所所有结点都只有左子有结点都只有左子树的二叉树称为树的二叉树称为左斜树左斜树2
13、.所有结点都只所有结点都只有右子有右子树的二叉树称为树的二叉树称为右斜树右斜树3.3.左斜树和右斜树统称左斜树和右斜树统称为为斜树斜树。1.在斜树中,每一层只有一个结点;在斜树中,每一层只有一个结点;2.斜树的结点个数与其深度相同。斜树的结点个数与其深度相同。斜树的特点:斜树的特点:ABCABC满二叉树满二叉树:一棵深度:一棵深度为为k k且有且有2 2k k-1-1个结点个结点的二叉树称为满二的二叉树称为满二叉树。叉树。特点:特点:6.2 6.2 二叉树二叉树123485679 1011 1213 1415特殊的二叉树特殊的二叉树1.叶子只能出现在最下一层;叶子只能出现在最下一层;2.只有度
14、为只有度为0和度为和度为2的结点。的结点。6.2 6.2 二叉树二叉树特殊的二叉树特殊的二叉树不是满二叉树,虽然不是满二叉树,虽然所有分支结点都有左所有分支结点都有左右子树,但叶子不在右子树,但叶子不在同一层上。同一层上。满二叉树在同样深度的二叉树中满二叉树在同样深度的二叉树中结点结点个数最多个数最多满二叉树在同样深度的二叉树中满二叉树在同样深度的二叉树中叶子结点叶子结点个数最多个数最多A1523467BCDEFGLM896.2 6.2 二叉树二叉树 -深度深度为为k k的,有的,有n n个结点的二个结点的二叉树,当且仅当每一个叉树,当且仅当每一个结点都与深度为结点都与深度为k k的满的满二叉
15、树中编号从二叉树中编号从1 1至至n n的的结点一一对应时,称为结点一一对应时,称为完全二叉树(也称为近完全二叉树(也称为近似满二叉树)似满二叉树)完全二叉树完全二叉树123485679 10特点特点:(:(1 1)叶子结点只可能在层次最大的两层上出现叶子结点只可能在层次最大的两层上出现 (2 2)对任一结点,若其右分支下的子孙最大层)对任一结点,若其右分支下的子孙最大层次为次为L L,则其左分支下的子孙最大层次必为,则其左分支下的子孙最大层次必为L L或或L+1L+1特殊的二叉树特殊的二叉树123485679 10 111213 141512345612345721367(a)完全二叉树完全
16、二叉树(b)非完全二叉树非完全二叉树(c)非完全二叉树非完全二叉树满二叉树是完全二叉树的特例。满二叉树是完全二叉树的特例。6.2 6.2 二叉树二叉树特殊的二叉树特殊的二叉树由此可得出如下结论:由此可得出如下结论:对一棵完全二叉树,有:对一棵完全二叉树,有:1.1.至多只有最下面两层上结点的度数可以小于至多只有最下面两层上结点的度数可以小于2 22.2.最下面一层结点都集中在该层的最左边最下面一层结点都集中在该层的最左边3.3.满二叉树是完全二叉树,反之不然,在完全二叉树满二叉树是完全二叉树,反之不然,在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,中,若某个结点没有左孩子,则它一定
17、没有右孩子,即该结点必是叶结点。即该结点必是叶结点。123485679 106.2 6.2 二叉树二叉树特殊的二叉树特殊的二叉树6.2.2 6.2.2 二叉树的性质二叉树的性质 性质性质1 1:在二叉树的第在二叉树的第i i层上至多有层上至多有2 2i-1i-1个结个结点点(i=1)(i=1)。第三层上第三层上(i=3)(i=3),有,有2 23-13-1=4=4个结点。个结点。第四层上第四层上(i=4)(i=4),有,有2 24-14-1=8=8个结点。个结点。6.2.2 6.2.2 二叉树的性质二叉树的性质 性质性质2 2:深度为:深度为k k的二叉树至多有的二叉树至多有2 2k k1 1
18、个结点(个结点(k=1)k=1)).6.2.2 6.2.2 二叉树的性质二叉树的性质性质性质3 3:对任何一棵二叉树,如果其终端结点对任何一棵二叉树,如果其终端结点数为数为n n0 0,度为,度为2 2的结点数为的结点数为n n2 2,则,则n n0 0n n2 21 1。6.2.2 6.2.2 二叉树的性质二叉树的性质 性质性质4 4:具有具有n n个结点的完全二叉个结点的完全二叉树的深度为树的深度为 符号符号 表示不大于表示不大于x x的最大整的最大整数。数。1log2n x123485679 10413110log2K完完全全二二叉叉树树的的两两个个重重要要特特性性6.2.2 6.2.2
19、 二叉树的性质二叉树的性质 性质性质5 5:如果对一棵有如果对一棵有n n个结点的完全二叉树个结点的完全二叉树的结点按层次编号的结点按层次编号,则对编号为则对编号为i i的结点的结点(1=i=n),1=i1i1,则其双亲是结点,则其双亲是结点。(2 2)如果)如果2in2in,则结点,则结点i i为叶子结点,无左孩为叶子结点,无左孩子;子;否则,其左孩子是结点否则,其左孩子是结点。(3 3)如果)如果2i2i1n1n,则结点则结点i i无右孩子无右孩子 否则,否则,其右孩子是结点其右孩子是结点。123485679 10完完全全二二叉叉树树的的两两个个重重要要特特性性性质性质5表明,在完全二叉树
20、中,结点的层序编号反映表明,在完全二叉树中,结点的层序编号反映了结点之间的逻辑关系。了结点之间的逻辑关系。6.2.2 6.2.2 二叉树的性质二叉树的性质 i/2ii+12i2i+12(i+1)2i+3i+12(i+1)2i+3i2i2i+1完全二叉树中结点完全二叉树中结点i和和i+1(a)i和和i+1结点在同一层结点在同一层(b)i和和i+1结点不在同一层结点不在同一层如图所示为完全二叉树上结点及其左右子如图所示为完全二叉树上结点及其左右子树在结点之间的关系。树在结点之间的关系。6.2.2 6.2.2 二叉树的性质二叉树的性质 在此过程中,可以从(在此过程中,可以从(2 2)和()和(3 3
21、)推出)推出(1 1),所以先证明(),所以先证明(2 2)和()和(3 3)。)。对于对于i i1 1,由完全二叉树的定义,其左,由完全二叉树的定义,其左孩子是结点孩子是结点2 2,若,若2n2n,即不存在结点,即不存在结点2 2,此,此是,结点是,结点i i无孩子。结点无孩子。结点i i的右孩子也只能是的右孩子也只能是结点结点3 3,若结点,若结点3 3不存在,即不存在,即3n3n,此时结点,此时结点i i无右孩子。无右孩子。对于对于i1i1,可分为两种情况:,可分为两种情况:(1 1)设第)设第j j(1=j=log2n)1=jn2in,则无左孩子:则无左孩子:6.2.2 6.2.2 二
22、叉树的性质二叉树的性质 其右孩子必定为第其右孩子必定为第j j1 1层的第二个结点,编层的第二个结点,编号为号为2i2i1 1。若。若2i+1n2i+1n,则无右孩子。,则无右孩子。(2 2)假设第)假设第j j(1=j=log2n)1=j=log2n)层上的层上的某个结点编号为某个结点编号为i i(2 2j-1j-1=i=2=i=2j j-1),-1),且且2i2i1n11i1时,时,如果如果i i为左孩子,即为左孩子,即2 2(i/2)=i,i/2)=i,则则i/2i/2是是i i的双亲;如果的双亲;如果i i为右孩子,为右孩子,i i2p+1,i2p+1,i的双亲的双亲应为应为p p,p
23、 p(i i1 1)/2=i/2./2=i/2.证毕。证毕。6.2.3 6.2.3 二叉树的存储结构二叉树的存储结构顺序存储结构顺序存储结构二叉树的顺序存储结构就是用一组连续的存储二叉树的顺序存储结构就是用一组连续的存储单元存储二叉树中的结点,并且结点的单元存储二叉树中的结点,并且结点的存储位存储位置置(下标)应能体现结点之间的(下标)应能体现结点之间的逻辑关系逻辑关系父子关系。父子关系。如何利用数组下标来反映结点之间的逻辑如何利用数组下标来反映结点之间的逻辑关系关系?完全二叉树完全二叉树和和满二叉树满二叉树中结点的序号可以惟一中结点的序号可以惟一地反映出结点之间的逻辑关系地反映出结点之间的逻
24、辑关系。6.2.3 6.2.3 二叉树的存储结构二叉树的存储结构 A B C D E F G H I J数组下标数组下标 1 2 3 4 5 6 7 8 9 10完全二叉树的顺序存完全二叉树的顺序存储储A15234678910BCDEFGHIJ以编号以编号为下标为下标完全二叉树完全二叉树6.2.3 6.2.3 二叉树的存储结构二叉树的存储结构二叉树的顺序存二叉树的顺序存储储ABC DE F G数组下标数组下标 1 2 3 4 5 6 7 8 9 10 11 12 13ABCDEGF以编号以编号为下标为下标ABCDEGF123561013按照完全按照完全二叉树编号二叉树编号一般二叉树一般二叉树6
25、.2.3 6.2.3 二叉树的存储结构二叉树的存储结构一棵斜树的顺序存储会怎样呢?一棵斜树的顺序存储会怎样呢?深度为深度为k的右斜树,的右斜树,k个结点需分配个结点需分配2k1个存个存储单元。储单元。一棵二叉树改造一棵二叉树改造后成完全二叉树后成完全二叉树形态,形态,需增加很需增加很多空结点多空结点,造成,造成存储空间的浪费存储空间的浪费。二叉树的顺序存储结构一般仅存储二叉树的顺序存储结构一般仅存储完全完全二叉树二叉树ABC137D156.2.3 6.2.3 二叉树的存储结构二叉树的存储结构二叉链表二叉链表基本思想:基本思想:令二叉树的每个结点对应一个令二叉树的每个结点对应一个链表结点,链表结
展开阅读全文