【问题标题】:red black tree - element removal without dummys红黑树 - 没有假人的元素移除
【发布时间】:2011-07-03 15:12:52
【问题描述】:

我正在寻找如何在不使用虚拟节点(即叶节点实际上是空指针)的情况下实现删除红黑树中的元素的指南。我在 google/wikipedia 和标准文献(sedgewick 和 cormen 等)上找到的所有实现都使用虚拟 NIL 节点,我想避免这种情况。

【问题讨论】:

    标签: red-black-tree


    【解决方案1】:

    对于插入,冈崎的双红消除开箱即用。像往常一样插入 BST 并不断消除双红,直到找到根。

    删除红色节点绝不是问题。请注意,永远不会从 BST 中删除具有两个子节点的节点。如果您删除一个带有一个子节点的黑色节点,请将子节点涂成黑色,然后就完成了。只有删除黑叶(真实的,而不是假的)是一个问题。 Matt Might's approach 可以在没有虚拟节点的情况下工作。诀窍是首先将叶子变成红色,使用马特的“冒泡”。然后简单地删除它。

    Here 是带有代码的解决方案。

    【讨论】:

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