【问题标题】:Maximum number of rotations to recover height balanced property in an AVL tree在 AVL 树中恢复高度平衡属性的最大旋转次数
【发布时间】:2016-03-22 20:46:13
【问题描述】:

如果在深度 d 处将新节点插入到 AVL 树中,恢复高度平衡属性可能需要的最大旋转次数是多少?

我猜想最大值可能是 log2(d),但这是不正确的。

【问题讨论】:

    标签: rotation computer-science avl-tree


    【解决方案1】:

    插入时,最多只需要旋转 1 次。你可以阅读它 https://en.wikipedia.org/wiki/AVL_tree

    删除时,树的每一层都可能需要轮换,所以删除是 O(log2(d))

    【讨论】:

    • 问题询问要恢复的最大旋转次数,因此在 wiki 中引用了 The time required is O(log n) for lookup, plus a maximum of O(log n) retracing levels (O(1) on average) on the way back to the root, so the operation can be completed in O(log n) time
    • 左右壳和左右壳都需要旋转两次才能恢复。
    【解决方案2】:

    如果你采用朴素的方法,你可以规范化和四舍五入基本的 AVL 余额

    {left,even,right} ~ {down,even,up} ~ {green,green,red}

    并在插入之前将路线全部清除为绿色。

    每个红灯最多需要 2 次旋转,其中不包括子树成本。问题是在旋转的 4 个四叉树中,有 1 个子树高度保持不变。

    如果下一个灯是绿灯,则每个红灯只需要旋转 2 次(不包括子树旋转成本。)

    为了从树顶向下移动一个新的绿灯,您必须从树顶一个接一个地旋转红灯。

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 2010-10-09
      • 2016-03-29
      相关资源
      最近更新 更多