首页 理论教育 二叉树及其基本性质

二叉树及其基本性质

时间:2023-02-28 理论教育 版权反馈
【摘要】:则深度为m、且有n个节点的二叉树,当且仅当其每一个节点都与深度为m的满二叉树中编号从1到n的节点一一对应时,称之为完全二叉树。性质2 设完全二叉树共有n个节点。,n)的节点有以下结论:根据完全二叉树的这个性质,如果按从上到下、从左到右顺序存储完全二叉树的各节点,则很容易确定每一个节点的父节点、左子节点和右子节点的位置。

2.6.2 二叉树及其基本性质

1.什么是二叉树

二叉树(Binary Tree)是一种很有用的非线性结构。二叉树不同于前面介绍的树结构。但它与树结构很相似。并且,树结构的所有术语都可以用到二叉树这种数据结构上。

二叉树具有以下两个特点:

①非空二叉树只有一个根节点;

②每一个节点最多有两棵子树,且分别称为该节点的左子树与右子树。

由以上特点可以看出,在二叉树中,每一个节点的度最大为2,即所有子树(左子树或右子树)也均为二叉树,而树结构中的每一个节点的度可以是任意的。另外,二叉树中的每一个节点的子树被明显地分为左子树与右子树。在二叉树中,一个节点可以只有左子树而没有右子树,也可以只有右子树而没有左子树。当一个节点既没有左子树也没有右子树时,该节点即是叶子节点。

如图2-30(a)所示是一棵只有根节点的二叉树,如图2-30(b)所示是一棵深度为4的二叉树。

img40

图2-30 二叉树例

2.二叉树的基本性质

二叉树具有以下几个性质:

性质1 在二叉树的第k层上,最多有2k-1(k≥1)个节点。

根据二叉树的特点,这个性质是显然的。

性质2 深度为m的二叉树最多有2m-1个节点。深度为m的二叉树是指二叉树共有m层。

根据性质1,只要将第l层到第m层上的最大节点数相加,就可以得到整个二叉树中节点数的最大值,即21-1+22-1+…+2m-1=2m-1

性质3 在任意一棵二叉树中,度为0的节点(即叶子节点)总是比度为2的节点多一个。

对于这个性质说明如下:

假设二叉树中有n0个叶子节点,n1个度为1的节点,n2个度为2的节点,则二叉树中总的节点数为

n=n0+n1+n2  (1)

由于在二叉树中除了根节点外,其余每一个节点都有唯一的一个分支进入。设二叉树中所有进入分支的总数为m,则二叉树中总的节点数为

n=m+1  (2)

又由于二叉树中这m个进入分支是分别由非叶子节点射出的。其中度为1的每个节点射出1个分支,度为2的每个节点射出2个分支。因此,二叉树中所有度为l与度为2的节点射出的分支总数为n1+2n2

而在二叉树中,总的射出分支数应与总的进入分支数相等,即

m=n1+2n2  (3)

将式(3)代入式(2)有

n=n1+2n2+1  (4)

最后比较式(1)和式(4)有

n0+n1+n2=nl+2n2+1

化简后得n0=n2+1

即:在二叉树中,度为0的节点(即叶子节点)总是比度为2的节点多一个。

例如,在如图2-30(b)所示的二叉树中,有3个叶子节点,有2个度为2的节点,度为0的节点比度为2的节点多一个。

性质4 具有n个节点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。

这个性质可以由性质2直接得到。

3.满二叉树与完全二叉树

满二叉树与完全二叉树是两种特殊形态的二叉树。

(1)满二叉树

所谓满二叉树是指:除最后一层外,每一层上的所有节点都有两个子节点。这就是说,在满二叉树中,每一层上的节点数都达到最大值,即在满二叉树的第k层上有2k-1个节点,且深度为m的满二叉树有2m-1个节点。

如图2-31(a)、(b)、(c)所示分别是深度为2、3、4的满二叉树。

img41

图2-31 满二叉树

(2)完全二叉树

所谓完全二叉树是指:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干节点。

更确切地说,如果从根节点起,对二叉树的节点自上而下、自左至右用自然数进行连续编号。则深度为m、且有n个节点的二叉树,当且仅当其每一个节点都与深度为m的满二叉树中编号从1到n的节点一一对应时,称之为完全二叉树。

如图2-32(a)、(b)所示分别是深度为3、4的完全二叉树。

img42

图2-32 完全二叉树

对于完全二叉树来说,叶子节点只可能在层次最大的两层上出现;对于任何一个节点,若其右分支下的子节点的最大层次为p,则其左分支下的子节点的最大层次或为p,或为p+1。

由满二叉树与完全二叉树的特点可以看出,满二叉树也是完全二叉树,而完全二叉树一般不是满二叉树。

完全二叉树还具有以下两个性质:

性质1 具有n个节点的完全二叉树的深度为[log2n]+1。

性质2 设完全二叉树共有n个节点。如果从根节点开始,按层序(每一层从左到右)用自然数1,2,…,n给节点进行编号。则对于编号为k(k=1,2,…,n)的节点有以下结论:

①若k=1,则该节点为根节点,它没有父节点;若k>1,则该节点的父节点编号为INT(k/2)。

②若2k≤n,则编号为k的节点的左子节点编号为2k;否则该节点无左子节点(显然也没有右子节点)。

③若2k+1≤n,则编号为k的节点的右子节点编号为2k+1;否则该节点无右子节点。

根据完全二叉树的这个性质,如果按从上到下、从左到右顺序存储完全二叉树的各节点,则很容易确定每一个节点的父节点、左子节点和右子节点的位置。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈