【问题标题】:Red Black Tree Insertion Questions why rotate?红黑树插入问题 为什么要旋转?
【发布时间】:2013-05-02 06:40:29
【问题描述】:

所以我有一棵红黑树如下:

2 = Root Black
Children = 1 (Black/Left), 4 (Red/Right)
Children of 1 = NIL & NIL => Height of Black Subtree is then 2 
Children of 4 = 3 (Black/Left), 5 (Black/Right)
Children of 3 = NIL & NIL, Height of Black Subtree is then 2 
Children of 5 = 7 (Red/Right)& NIL, Height is still then of course 2. 

所以当我插入 6(当然颜色是红色)时,它会成为 7 的左孩子。在我关注的这个网络应用程序中,它会在 6 和 7 上旋转。为什么?从我所见,它似乎没有违反 RBT 的任何属性。

注意:源 Web 应用是 Java Web 应用,需要 1.7 来源:http://gauss.ececs.uc.edu/RedBlackTester/redblack.html

【问题讨论】:

    标签: red-black-tree


    【解决方案1】:

    RBT的属性是。

    1. 每个节点不是红色就是黑色。
    2. 根和叶 (NIL) 是黑色的。
    3. 如果一个节点是红色的,那么它的父节点是黑色的。
    4. 从任何节点 x 到 a 的所有简单路径 后代叶子具有相同的编号 黑色节点数 = black-height(x)。

    因此,如果 7 是红色的,并且当添加 6 时,它也是红色的,这违反了第三个属性,因此旋转并更改以消除违规。

    【讨论】:

    猜你喜欢
    • 2011-08-06
    • 2013-06-12
    • 2012-12-01
    • 2013-03-05
    • 2018-11-06
    • 2013-11-17
    • 2011-08-03
    • 2016-03-30
    相关资源
    最近更新 更多