AVL树中的LL失衡、RR失衡、RL失衡和LR失衡详解

目录

【详解LL失衡、RR失衡、RL失衡和LR失衡】

【LL失衡、RR失衡、RL失衡和LR失衡后如何修改为AVL树】

【LL失衡:】

【RR失衡:】

【LR失衡:】

【RL失衡:】


【详解LL失衡、RR失衡、RL失衡和LR失衡】

LL失衡、RR失衡、RL失衡和LR失衡都是指在二叉树中,当插入或删除节点后导致左右子树的高度差大于1时所出现的情况。具体定义如下:

  • LL失衡:是指在二叉树中,当一个新节点插入到左子树的左子树中时,导致左子树高度比右子树高度大2,此时需要进行旋转调整。
  • RR失衡:是指在二叉树中,当一个新节点插入到右子树的右子树中时,导致右子树高度比左子树高度大2,此时需要进行旋转调整。
  • RL失衡:是指在二叉树中,当一个新节点插入到左子树的右子树中时,导致左子树高度比右子树高度大2,此时需要进行两次旋转调整。
  • LR失衡:是指在二叉树中,当一个新节点插入到右子树的左子树中时,导致右子树高度比左子树高度大2,此时需要进行两次旋转调整。

在对树进行旋转调整以重新平衡后,树的高度差不会超过1,维护了树的平衡性。

【LL失衡、RR失衡、RL失衡和LR失衡后如何修改为AVL树】

【LL失衡:】

在插入节点后,左子树的高度比右子树高度多2,则需要进行右旋操作,将左子树的深度降低,右子树的深度增加。

右旋操作如下:

  1. 将左子树上升为根节点,原根节点成为右子树的根节点。

  2. 将原左子树的右子树作为新的根节点的左子树。

  3. 将原根节点的右子树作为新的根节点的右子树。

LL失衡的示意图:

          A            B
         /            / \
        B     ->     C   A
       /
      C 

【RR失衡:】

在插入节点后,右子树的高度比左子树高度多2,则需要进行左旋操作,将右子树的深度降低,左子树的深度增加。

左旋操作如下:

  1. 将右子树上升为根节点,原根节点成为左子树的根节点。

  2. 将原右子树的左子树作为新的根节点的右子树。

  3. 将原根节点的左子树作为新的根节点的左子树。

RR失衡的示意图:

        A                B
         \              / \
          B     ->     A   C
           \
            C 

【LR失衡:】

在插入节点后,左子树的高度比右子树高度多2,并且左子树的右子树高度比左子树的左子树高度高,则需要进行左右旋转操作。

左右旋转操作如下:

  1. 将左子树的右子树作为新的根节点。

  2. 将原左子树的右子树的左子树作为新的根节点的左子树。

  3. 将原左子树作为新的根节点的左子树。

  4. 进行LL失衡的右旋操作。

LR失衡的示意图:

          A              A            C
         /              /            / \
        B      ->      C      ->    B   A
         \            / 
          C          B 

【RL失衡:】

在插入节点后,右子树的高度比左子树高度多2,并且右子树的左子树高度比右子树的右子树高度高,则需要进行右左旋转操作。

右左旋转操作如下:

  1. 将右子树的左子树作为新的根节点。

  2. 将原右子树的左子树的右子树作为新的根节点的右子树。

  3. 将原右子树作为新的根节点的右子树。

  4. 进行RR失衡的左旋操作。

RL失衡的示意图:

        A                  A                C
         \                /                / \
          B      ->      C        ->      A   B
         /                  \ 
        C                    B 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Studying~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值