平衡二叉树结构 AVL

它是在BST的基础上又加了限制条件,限制任一结点的左右子树的高度差不能大于1.也就是说AVL看起来要更加规整。 索引 若理想情况--左右子树高度相等,其搜索时间复杂度为log(N),若不理想--线性树,时间复杂度变为O(N)。 AVL平衡失控的原因是因为加入了新结点。它有四种失衡状态: 索引 AVL树失去平衡之后,可以通过旋转使其恢复平衡。下面分别介绍四种失去平衡的情况下对应的旋转方法。 LL的旋转。LL失去平衡的情况下,可以通过一次旋转让AVL树恢复平衡。步骤如下:
  1. 将根节点的左孩子作为新根节点。
  2. 将新根节点的右孩子作为原根节点的左孩子。
  3. 将原根节点作为新根节点的右孩子。
LL旋转示意图如下: 索引 RR的旋转:RR失去平衡的情况下,旋转方法与LL旋转对称,步骤如下:
  1. 将根节点的右孩子作为新根节点。
  2. 将新根节点的左孩子作为原根节点的右孩子。
  3. 将原根节点作为新根节点的左孩子。
RR旋转示意图如下: 索引 LR的旋转:LR失去平衡的情况下,需要进行两次旋转,步骤如下:
  1. 围绕根节点的左孩子进行RR旋转。
  2. 围绕根节点进行LL旋转。
LR的旋转示意图如下: 索引 RL的旋转:RL失去平衡的情况下也需要进行两次旋转,旋转方法与LR旋转对称,步骤如下:
  1. 围绕根节点的右孩子进行LL旋转。
  2. 围绕根节点进行RR旋转。
RL的旋转示意图如下: 索引
posted @ 2019-02-24 10:42  zohy  阅读(125)  评论(0编辑  收藏  举报