AVL树是否总是红黑树的子集?

时间:2009-01-10 20:41:50

标签: data-structures avl-tree red-black-tree

我正在寻找一个证据,证明所有的AVL树都可以像红黑树一样着色? 谁能举证?

4 个答案:

答案 0 :(得分:1)

根据定义,R / B树可以比AVL-s略微平衡,因为| maxPath - minPath | AVL必须< = 1,R / B的maxPath< = 2 * minPath必须不是每个R / B都是AVL,但另一方面AVL-s不需要空子树/ p>

     4
    / \
   3   6
  /\   /\
 1  E 5  8

是一个完全合法的AVL,它不是R / B,因为R / B不能包含叶子,必须用空白的树木终止,这些树木的颜色总是黑色 - 这样你就不能给上面的树上色了。 为了使其成为R / B,您可以将每个叶子x转换为节点E x E 然后遵循以下规则: R / B树:     必须是BST     必须只包含颜色为黑色或红色的节点和空树     每个Red节点都有黑孩子     所有空树都是黑色的     给定节点,空树的所有路径必须具有相同数量的黑节点     任何Leaf都可以替换为Left&右子树是空的     最大路径T≤2*最小路径T

顺便说一下,它意识到它为我的节点着色并留下红色 - 这不是故意的。 卡罗尔

答案 1 :(得分:-1)

好的,我给你一个提示

请查看:AVL TreeRed black Tree,如果您了解这一点,则证明应该是微不足道的。

答案 2 :(得分:-1)

我怀疑答案是肯定的。

AVL树比RB树更平衡,这意味着它们的平衡方式不同,这意味着你不能将每个AVL树都着色为有效的RB树。

答案 3 :(得分:-1)

答案是肯定的,每个AVL树都可以涂成红黑色,反之亦然。

我还没弄清楚如何做到这一点,我也在寻求证据。