【问题标题】:insert_rebalance in red-black tree红黑树中的 insert_rebalance
【发布时间】:2018-02-07 14:52:15
【问题描述】:

rb_tree 中的insert_rebalance 主要需要两次旋转?

我不这么认为!

“1”是最新的插入节点。情况1:当前节点为红色,父亲为红色,叔叔为红色。

所以我们设置父亲的颜色为黑色,叔叔的颜色为黑色,父亲的父亲颜色为红色,并将父亲的父亲设置为当前节点,继续前进。

经过以上操作,又是case 1。

让我们想象一下:如果总是变成 case 1,那么旋转的次数将不仅仅是 2,可能更多。

我上面的说法是对的吗?我想确认一下我的想法。

【问题讨论】:

    标签: algorithm tree red-black-tree


    【解决方案1】:

    如果插入位置是随机的,那么两次旋转是相当不寻常的。

    从0个节点开始:

    B(0% 需要两次旋转)

    b r (25% 需要两次旋转)

    b r r (0% 需要两次旋转)

    b b b r (20% 需要两次旋转)

    b b b r r (0% 需要两次旋转)

    在可以进行两次旋转的步骤中,也可以在不需要第二次旋转的情况下填充树。如果插入位置始终是最大的而不是随机的,那么两次旋转插入的数量为 0,但大约 50% 的时间会旋转一次。

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2013-06-05
      • 1970-01-01
      • 2015-11-17
      • 2012-11-30
      • 2014-07-05
      • 2013-02-28
      • 2022-07-30
      • 2011-04-23
      相关资源
      最近更新 更多