【问题标题】:Red-Black Tree clarification questions红黑树说明问题
【发布时间】:2016-07-15 01:28:09
【问题描述】:

我一直在阅读有关红黑树的信息,并且有两个关于它们的问题一直困扰着我。如果这些对于更有经验的编码人员来说是显而易见的,我仍在学习它们,非常抱歉。

  1. 如果将节点插入红黑树,平衡树,然后删除节点,是否会产生同一棵树?总是这样吗?在我看来确实如此,但我不完全确定。

  2. 如果删除一个没有子节点的红色节点,平衡树,然后重新插入相同的节点总是会产生相同的树?总是、有时还是从不?

再次,对不起,如果有琐碎,我还在学习,还没有找到这些问题的好答案。提前致谢!

【问题讨论】:

    标签: binary-tree red-black-tree


    【解决方案1】:

    第一个问题的答案是no it does not lead to the same tree,下面我举了一个例子:

             5(B)                        5(B)                   5(B)
         /          \        Del(3)    /      \     Ins(3)    /      \
       3(B)          9(B)    =====>   4(B)    9(B)  =====>  4(B)     9(B)
          \                                                 /
           4(R)                                          3(R)
    

    你可以看到树已经改变了。

    第二个问题的答案是yes it always result in the same tree,因为当您删除red node that has no children 时,不会发生重新平衡,因为没有违反规则,因为red node 的父级始终是black node,当我们添加红色节点再次出现在同一个地方。

    这是一个可视化工具的链接,可以帮助您消除更多疑虑:https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

    【讨论】:

    • 太棒了,谢谢。该网站对我的理解很有帮助!
    猜你喜欢
    • 2011-08-03
    • 2016-06-28
    • 2011-08-06
    • 2014-02-15
    • 2013-10-27
    • 2013-06-12
    • 2011-01-19
    • 1970-01-01
    • 2021-06-27
    相关资源
    最近更新 更多