AVL树的额外案例

时间:2015-12-22 04:33:45

标签: algorithm data-structures avl-tree tree-rotation

AVL树似乎有四种转换:左 - 左,左 - 右,右 - 左和右 - 右。但是,似乎还有其他情况。我将此作为左平衡提交:

enter image description here

左旋和右旋都不能平衡这棵树。用什么算法来平衡它?

2 个答案:

答案 0 :(得分:3)

LL和LR都可以在这里应用

0

在第一次LR转弯后:

        50
       /  \
     40    55
    /  \
  35    45
  / \   / \
34  36 44 46

第二次LR转弯后:

           50
          /  \
        45   55
       /  \
     40    46
    /  \
  35    44
  / \
34  36

这是有效的AVL树。注意

  

在AVL树中,任何节点的两个子树的高度至少相差

您也可以进行LL转弯:

        45
       /  \
     40    50
    / \    / \
  35  44  46  55
 / \
34  36

这也是有效的AVL树。

答案 1 :(得分:1)

我认为你无法得到左平衡案例。 因为如果你构建了左平衡的那个,你可以先左右或左右,然后树会旋转并保持平衡。