为什么红黑树的高度最多为2 * O(ln N + 1)?

时间:2013-07-18 20:55:22

标签: tree time-complexity red-black-tree

具有n个内部节点的红黑树的高度最多为2 * O(ln N + 1)。换句话说,红黑树的高度最多为两倍。

任何人都可以直观地解释为什么会这样吗?我不是在寻找归纳证明(我可以在网上找到它们)。这只是一个直观的原因吗?我不能想出一个例子,其中R-B树的高度最多为2 * O(ln N + 1)。

1 个答案:

答案 0 :(得分:2)

这个link给出了定理的直观证明。

下面,我将简单介绍一下校对的步骤:

  1. 将红色节点合并到他们的黑人父母并获得一棵新树。
  2. 生成的树将有节点分支2,3或4个孩子。
  3. 观察:新树的黑色高度h'将与原始树的黑色高度相同。
  4. 观察:新树的高度h'至少可以是原始树h高度的一半。 (即我们有h'> = h / 2)
  5. 一个完整的二叉树,高度为h'有2 ^ h' -1个内部节点。
    • 记住第2步,我们的新树在内部节点中分支2,3或4。
    • 因此,新树的内部节点数超过2 ^ h' -1
    • 原始树具有比新树更多的内部节点(因为我们将红色节点合并为继承人黑色父母)。因此,n> = 2 ^ h' -1
  6. 其余的是代数:

    • n + 1> = 2 ^ h' (取双方的对数)
    • lg(n + 1)> = h' (我们知道上面第4步中的h'> = h / 2)
  7. 最后我们得到

    • 2lg(n + 1)> = h。

    这样就完成了证明。