红黑树和AVL树是否具有相同的平衡条件?

时间:2017-03-21 14:05:20

标签: algorithm data-structures

例如:

不平衡的树:

  4
/   \
1    11
    /
   7
 /  \
5    9

平衡后,它将成为AVL树:

    11
   /   \
  4    7
 /    / \
1    5   9

但是,如果不平衡树是这样的R-B树:

(\\表示读指针。\表示黑色指针。)

  4
/   \\
1    11
    /
   7
 //  \\
 5    9

这是合法的R-B树吗?或者我应该像我对树做的那样平衡它?

1 个答案:

答案 0 :(得分:2)

AVL树的平衡条件不同于红黑树的平衡条件。从某种意义上说,AVL树比红黑树更平衡。

在AVL树中,对于每个节点vv的右子树的高度与v的左子树的高度之间的差异必须与红黑树相比,这是一种非常严格的平衡特性。在红黑树中,从根到叶子的简单路径不允许超过任何其他路径的两倍。此属性由five color conditions二进制搜索树必须满足才能被视为有效的红黑树。

您的示例红黑树在AVL意义上确实不平衡,因为根的左子树的高度与其右子树的高度之间的差异为2.尽管如此,树在红黑感,因为它满足五种红黑色条件。

AVL平衡条件意味着the height of an AVL tree is bounded by roughly 1.44log(n),而没有任何东西阻止红黑树的高度变大:红黑树平衡条件仅暗示a bound of 2log(n)高度。

事实上,AVL树往往比红黑树短,这似乎表明它们必须表现得更好。情况不一定如此:AVL树确实通常更快搜索,因为它比红黑树更平衡。但AVL树如此平衡的原因在于保持平衡在计算上比保持红黑树平衡更难。特别是,与相应的红黑树中的这些操作相比,AVL rotations使AVL树中的插入和删除速度变慢。