您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法系列-树-二叉树的定义与性质

2013-11-12 20:14 483 查看

定义:

二叉树是另一种特殊的树形结构,它的特点是每个结点至多有两个子树。(即二叉树中不存在度大于2的树),二叉树的子树有左右之分,其次序不能颠倒。

是结点的有限集合,这个集合可以为空集或者是由一个根节点和两颗互不相交的分别称为这个根节点的左右子树的二叉树组成。

二叉树的性质

性质1 二叉树第i层上的结点数目最多为2i-1(i≥1)。

证明:用数学归纳法证明:

  归纳基础:i=1时,有2i-1=20=1。因为第1层上只有一个根结点,所以命题成立。

 归纳假设:假设对所有的j(1≤j<i)命题成立,即第j层上至多有2j-1个结点,证明j=i时命题亦成立。

 归纳步骤:根据归纳假设,第i-1层上至多有2i-2个结点。由于二叉树的每个结点至多有两个孩子,故第i层上的结点数至多是第i-1层上的最大结点数的2倍。即j=i时,该层上至多有2×2i-2=2i-1个结点,故命题成立。

性质2 深度为k的二叉树至多有2k-1个结点(k≥1)。

证明:由性质 (1) 可知各层结点最多数目之和为: 2 0 +2 1 +2 2 +.....+2 k-1 ;由二进制换算关系可知: 2 0 +2 1 +2 2 +.....+2 k-1 = 2 k -1 ;因此二叉树树中结点的最大数目为
2 k -1 。性质 2 证明完毕。

性质3 在任意-棵二叉树中,若叶子结点(即度为0的结点)的个数为n0,度为1的结点数为n1,度为2的结点数为n2,则no=n2+1。

证明:因为二叉树中所有结点的度数均不大于2,所以结点总数(记为n)应等于0度结点数、1度结点(记为n1)和2度结点数之和:

n=no+n1+n2 (6.1)

 

由于有n个结点的二叉树总边数为n-1条,于是得:

n-1=0*n0+1*n1+2*n2 (6.2)

将(6.1)式代入(6.2)式得:n0=n2+1。性质3证明完毕

满二叉树和完全二叉树是二叉树的两种特殊情形。

1、满二叉树(FullBinaryTree)

 一棵深度为k且有2k-1个结点的二又树称为满二叉树。

 满二叉树的特点:

  (1) 每一层上的结点数都达到最大值。即对给定的高度,它是具有最多结点数的二叉树。

  (2) 满二叉树中不存在度数为1的结点,每个分支结点均有两棵高度相同的子树,且树叶都在最下一层上。

  【例】图6.4(a)是一个深度为3的满二叉树。



2、完全二叉树(Complete BinaryTree)

若一棵二叉树至多只有最下面的两层上结点的度数可以小于2,并且最下一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。

特点:

(1) 满二叉树是完全二叉树,完全二叉树不一定是满二叉树。

(2) 在满二叉树的最下一层上,从最右边开始连续删去若干结点后得到的二叉树仍然是一棵完全二叉树。

(3) 在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。

【例】如图6.4(c)中,结点F没有左孩子而有右孩子L,故它不是一棵完全二叉树。

【例】图6.4(b)是一棵完全二叉树。

性质 4 具有n个结点的完全二叉树的高度为log2的n次方下取整+1
(下取整: 不大于x的最大整数。)

证明:假设某完全二叉树的结点总数是 n ,它的值应该大于树深为 K-1 的满二叉树结点数 2 k-1 -1 ,小于等于树深为 K1 的满二叉树结点数 2 k -1 。

2 k-1 -1 < n <= 2 k -1

由于该不等式各项均为整数,当对两端两项各加 1 时不等式发生变化得:

2 k-1 <= n < 2 k

再对其取对数得: k-1<= log 2 n < k

如果对 log 2 n 取整显然等于 k-1 :, 所以得:

性质 4 证明完毕。

性质 5 若对有 n 个结点的完全二叉树进行顺序编号
(1 ≤ i ≤ n) ,那么:

对于编号为 i(i ≥ 1) 结点 :

当 i=1 时,该结点为根,它无双亲结点;

当 i>1 时,该结点的双亲结点编号为 ;

若 2i ≤ n ,它有编号为 2i 的左孩子,否则没有左孩子;

若 2i+1 ≤ n ,则它有编号为 2i+1 的右孩子,否则没有右孩子。

对照图 6.4(a) 或图 6.4(b) 读者可看到由性质 ( 5 ) 所描述的结点与编号的对应关系 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: