【问题标题】:How to rotate in red black tree如何在红黑树中旋转
【发布时间】:2018-11-07 03:28:45
【问题描述】:

我正在尝试用红黑树解决这个练习:我需要按此顺序插入 2、1、4、5、9。在最后一个输入之后,我需要用 Insert-Fixup 算法来平衡它:

我需要遵循的算法部分是:

if z == z.p.right
   z = z.p
   LEFT-ROTATE (T, z)
z.p.color = BLACK
z.p.p.color = RED
RIGHT-ROTATE (T, z.p.p)

(Z 是我要插入的节点),z.p 是它的父亲。所以我试着按照这些步骤直到左旋转,结果是这样的:对吗?

我在互联网上搜索,我读到有双旋转算法,但我不知道我是否可以在这里使用它们而不是使用单旋转(例如,我不知道用4)。

【问题讨论】:

  • 你不能在 4 处向右旋转,因为它没有左孩子。您正在查看的修复案例不适合您的树形。如果您要插入 4 的 left 子树,它会起作用

标签: algorithm tree rotation red-black-tree


【解决方案1】:

您正在关注错误的案例。我已经在以下步骤中解释了答案。在最后一步,即插入 9,我们必须进行左旋转(4)和重新着色。

以下是我解释步骤的图片:

【讨论】:

    猜你喜欢
    • 2013-11-11
    • 2013-10-13
    • 2012-11-30
    • 2011-03-21
    • 2019-09-07
    • 2015-04-20
    • 2013-05-02
    • 2016-03-18
    • 2019-07-09
    相关资源
    最近更新 更多