二叉树属性 - 平衡

时间:2013-02-14 19:14:18

标签: algorithm binary-tree

我正在尝试理解二叉树属性。但我不确定一件事:

def。一棵二进制树说:

  1. 如果对于每个节点,二元树是平衡的,左子树中的内部节点数和右子树中的内部节点数最多相差1。

  2. 如果任何两个树离开diff,则二叉树是平衡的。深度最多1。

  3. 我问我是否这两个def。是等价的,我的意思是确定。 1 statisfy Def。 2,反之亦然? ...对我来说似乎是......但谁可以用例子来解释我这个属性的(非)等价?

    谢谢, 帕特里克

1 个答案:

答案 0 :(得分:7)

不,两者不相同。

    3
   / \
  2   7
 /   / \
1   5   8
   / \   \
  4   6   9

是满足属性2的树,但不是属性1.

属性1表示属性2,但是。

命题:在根据属性1与n内部节点平衡的二叉树中,所有叶子的深度为

  • k if n = 2^k - 1
  • kk+1如果2^k <= n < 2^(k+1)-1,并且有深度k+1

证明:(通过对内部节点数量的归纳)

对于n = 1 = 2^1-1,深度为1的一个或两个叶子(根深度为0)。

对于n = 2,一个子树有一个内部节点,该子树中的所有叶子都在深度2,另一个子树是空的或深度为1的叶子。

n >= 2并考虑根据属性1与n+1内部节点平衡的二叉树。

如果n是偶数,n = 2*m,则两个子树必须具有m个内部节点,并且深度属性由归纳假设保留。

如果n = 2*m+1为奇数,则一个子树有m个内部节点,另一个m+1

  1. 如果2^k <= m < 2^(k+1)-1,带有m内部节点的子树的深度为k+1,并且可能由感应假设留在深度k。包含m+1内部节点的树也有深度为k+1的树叶,可能(如果m+1 < 2^(k+1)-1)深度为k

  2. 如果m = 2^k - 1,具有m内部节点的子树仅在深度k处离开,而具有m+1个内部节点的子树在深度处留下{ {1}},可能深度为k+1