【问题标题】:The Delete operation In Red Black Tree红黑树中的删除操作
【发布时间】:2013-09-01 23:24:48
【问题描述】:

最近,我正在学习左瘦红黑树。我红了this 来帮助我学习。但是,我无法理解 delete 操作中代码的含义,它们是:

if (isRed(h.left))h = rotateRight(h);

我只是找不到一个很好的例子来帮助我了解这段代码的用法。

谁能帮我解释为什么代码应该在那里(有一个小例子更好)?

【问题讨论】:

  • 如果h.left为红色,则向右旋转h并赋值给h?

标签: c++ data-structures red-black-tree


【解决方案1】:

PDF 的第 7 页包含完整的功能。基本上它在做什么,如果该行是“红色”(意味着它被添加以强制树成为 LLRBT),然后将左子节点旋转到它的位置。

    A
   / \
  B   C

如果我要删除 A,我会将 B 旋转到它的位置:

    B
     \
      C

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2014-07-05
    • 2016-08-03
    • 2021-01-03
    • 2021-10-17
    • 1970-01-01
    • 2011-03-27
    • 2012-11-01
    相关资源
    最近更新 更多