4-4二叉树的逻辑结构_第1页
4-4二叉树的逻辑结构_第2页
4-4二叉树的逻辑结构_第3页
4-4二叉树的逻辑结构_第4页
4-4二叉树的逻辑结构_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4-4二叉树的逻辑结构v第四章树和二叉树二叉树的定义二叉树的基本性质二叉树的抽象数据类型定义学什么?二叉树的构造二叉树的遍历操作4-4-1二叉树的定义v第四章树和二叉树二叉树的定义二叉树:是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树是度为2的树吗?AB二叉树是度小于等于2的树吗?ABACBDEFGACBDEFG二叉树有什么特点?(1)每个结点最多有两棵子树(2)二叉树是有序的,其次序不能任意颠倒

为什么要研究二叉树?(1)二叉树是最简单的树结构(2)将树转换为二叉树,

从而利用二叉树解决树的有关问题二叉树的特点斜树斜树:左斜树和右斜树的统称左斜树:所有结点都只有左子树的二叉树ABD右斜树:所有结点都只有右子树的二叉树ABD斜树有什么特点呢?(1)每一层只有一个结点(2)结点个数与其深度相同斜树是树结构的特例,是从树结构退化成了线性结构满二叉树满二叉树:所有分支结点都存在左子树和右子树,并且所有叶子都在同一层的二叉树ABCDEFHIJKLMNOGABCDEFLMG所有分支结点都有左右子树,但叶子不在同一层满二叉树有什么特点呢?(1)叶子只能出现在最下一层满二叉树是树结构的特例,是最丰满的二叉树ABCDEFHIJKLMNOG(4)在同样深度的二叉树中叶子结点个数最多(2)只有度为0和度为2的结点(3)在同样深度的二叉树中结点个数最多满二叉树满二叉树:所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上的二叉树L完全二叉树完全二叉树:在满二叉树中,从最后一个结点开始,连续去掉任意个结点得到的二叉树ABCDEFHIJKMNOGABCDEFHIJKMG完全二叉树有什么特点呢?(1)叶子结点只能出现在最下两层且最下层的叶子结点都集中在二叉树的左面ABCDEFHIJG(3)深度为k

的完全二叉树在

k-1层上一定是满二叉树(2)完全二叉树中如果有度为1的结点,只可能有一个,且该结点只有左孩子(4)在同样结点个数的二叉树中,完全二叉树的深度最小完全二叉树完全二叉树:在满二叉树中,从最后一个结点开始,连续去掉任意个结点得到的二叉树4-4-2二叉树的基本性质v第四章树和二叉树二叉树的性质性质5-1:在一棵二叉树中,如果叶子结点数为n0,度为2的结点数为n2,则有:n0=n2+1ACBE证明:设n为二叉树的结点总数,n1为二叉树中度为1的结点数,则有:

n=n0+n1+n2

在二叉树中,除了根结点外,其余结点都有唯一的一个分枝进入,一个度为1的结点射出一个分枝,一个度为2的结点射出两个分枝,所以有:

n=n1+2n2+1两式联立,可以得到:

n0=n2+1性质5-2:二叉树的第

i

层上最多有2i-1个结点(i≥1)证明:采用归纳法证明。当

i=1时,只有一个根结点,而2i-1=20=1,结论成立。假设

i=k时结论成立,即第

k层上最多有2k-1个结点。考虑

i=k+1时的情形。由于第

k+1层上的结点是第

k层上结点的孩子,而二叉树中每个结点最多有两个孩子,故在第

k+1层上的最多大结点个数有2×2k-1=2k个结点,则在

i=k+1时结论也成立。由此,结论成立。二叉树的性质性质5-3:一棵深度为k

的二叉树中,最多有2k-1个结点证明:设深度为k的二叉树中结点个数最多为n,则深度为k且具有2k-1个结点的二叉树一定是满二叉树二叉树的性质证明:设具有n

个结点的完全二叉树的深度为k,则2k-1-12k-1…2k-1第k层…第k-1层对不等式取对数,有:

k-1≤log2n<k即:

log2n<k≤log2n+1二叉树的性质性质5-4:具有n个结点的完全二叉树的深度为log2n+1。由于k

是整数,故必有

k=log2n+1性质5-5:对一棵具有n

个结点的完全二叉树中从1开始按层序编号,对于编号为i(1≤i≤n)的结点(简称结点i),有:(1)如果i>1,则结点i

的双亲结点的编号为i/2,否则结点i

无双亲结点(2)如果2i≤n,则结点i

的左孩子的编号为2i,否则结点i

无左孩子(3)如果2i+1≤n,则结点i

的右孩子的编号为2i+1,否则结点i

无右孩子12345689107二叉树的性质4-4-3二叉树的抽象数据类型定义v第四章树和二叉树二叉树的抽象数据类型定义ADTBiTreeDataModel

二叉树由一个根结点和两棵互不相交的左右子树构成,结点具有层次关系OperationInitBiTree:初始化一棵空的二叉树

CreateBiTree:建立一棵二叉树

DestroyBiTree:销毁一棵二叉树PreOrder:前序遍历二叉树InOrder:中序遍历二叉树PostOrder:后序遍历二叉树LevelOrder:层序遍历二叉树endADT简单起见,只讨论二叉树的遍历二叉树的遍历二叉树的遍历:从根结点出发,按照某种次序访问树中所有结点,并且每个结点仅被访问一次抽象操作,可以是对结点进行的各种处理,这里简化为输出结点的数据限定先左后右:先序、中序、后序根结点D左子树L右子树R二叉树按照什么次序对二叉树进行遍历呢?二叉树的遍历方式:DLR、LDR、LRD、DRL、RDL、RLD

层序遍历:按二叉树的层序编号的次序访问各结点二叉树的先序遍历操作定义:若二叉树为空,则空操作返回;否则:(1)访问根结点(2)先序遍历根结点的左子树(3)先序遍历根结点的右子树ACBDEFG先序:ABDGCEF二叉树的遍历二叉树的中序遍历操作定义:若二叉树为空,则空操作返回;否则:(1)中序遍历根结点的左子树(2)访问根结点(3)中序遍历根结点的右子树中序:DGBAECF二叉树的后序遍历操作定义:若二叉树为空,则空操作返回;否则:(1)后序遍历根结点的左子树(2)后序遍历根结点的右子树(3)访问根结点ACBDEFG后序:GDBEFCA二叉树的遍历层序:ABCDEFG二叉树的层序遍历操作定义:从二叉树的根结点开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问若已知一棵二叉树的先序(或中序,或后序,或层序)序列,能否唯一确定这棵二叉树呢?ABCABC先序遍历序列:ABC若已知一棵二叉树的先序序列和后序序列,能否唯一确定这棵二叉树呢?后序遍历序列:CBA二叉树的构造先序:ABCDEFG

HI中序:BCA

EDGHFIADEFG

HIBC先序:BC中序:BC先序:DEFGHI中序:EDGHFIDEFGHIABC二叉树的构造例4-1已知一棵二叉树的先序遍历序列和中序遍历序列分别为ABCDEFGH和CDBAFEHG,请确定该二叉树。先序:FG

HI中序:GHFIADEBCFGIH层序:

ABCDEFGHI中序:

D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论