AVL 树 RL 型旋转

AVL树是自平衡二叉搜索树,核心要求任意节点平衡因子BF=左子树高度-右子树高度,满足

;插入节点触发失衡时,通过旋转调整恢复平衡,全程严格遵守二叉搜索树左小右大规则。

一、前置基础:插入后初始结构与数值规则

在4的右子节点位置插入4.5,符合

,为标准合法插入位置。
插入完成后原始树形(括号为节点高度):

          3(4)
         /   \
        2(1)  5(3)
             / \
            4(2)6(1)
             \
             4.5(1)

数值排序:

  1. BST规则:左子树所有值<根节点<右子树所有值
  2. AVL平衡规则:所有节点平衡因子绝对值不能大于1

二、失衡判定与旋转类型确定

从新节点4.5向上回溯,依次计算高度与平衡因子:

  1. 节点4.5:高度1,BF=0,无失衡
  2. 节点4:左高0,右高1,高度2,BF=-1,无失衡
  3. 节点6:高度1,BF=0,无失衡
  4. 节点5:左高2,右高1,高度3,BF=1,无失衡
  5. 节点2:高度1,BF=0,无失衡
  6. 节点3:左高1,右高3,高度4,

    ,首个失衡节点

旋转类型判定

  1. 失衡节点3的BF=-2,代表右子树过高
  2. 失衡节点右孩子为5,5的BF=1,代表右子节点的左子树偏高
  3. 形成右-左折线结构,判定为RL型失衡
  4. 固定矫正规则:先右旋失衡节点的右子节点,再左旋顶层失衡节点

三、分步旋转操作

第一步:右旋右子节点5(RL转RR直线结构)

旋转目的:把5、4、4.5的折线结构拉直,转化为右右平衡结构,为左旋做铺垫。

  1. 将4的左空分支挂载至5的左孩子位置
  2. 把5作为4的右孩子,完成父子节点调换
  3. 更新节点高度,替换原位置接入根节点3右侧

右旋5后中间树形:

          3(4)
         /   \
        2(1)  4(2)
               \
                5(2)
               / \
             4.5(1)6(1)

第二步:左旋顶层失衡节点3(整体恢复平衡)

旋转目的:降低右侧子树整体高度,完成整棵树平衡矫正。

  1. 将4的左空分支挂载至3的右孩子位置
  2. 把3作为4的左孩子,调换顶层父子关系
  3. 重新更新所有节点高度,完成最终定型

左旋3后最终平衡树形:

          4(3)
         /   \
        3(2)  5(2)
       /     / \
      2(1) 4.5(1)6(1)

四、结果双重校验

1. 二叉搜索树规则校验

  • 2<3<4,4.5<5<6,所有节点左小右大,排布完全合规
  • 所有子树区间划分清晰,无数值顺序错乱

2. AVL平衡因子校验

  • 叶子节点2、4.5、6:BF均为0
  • 节点3:左高1,右高0,BF=1
  • 节点5:左高1,右高1,BF=0
  • 根节点4:左右子树高度均为2,BF=0
    所有节点

    ,树完全平衡,无需再次旋转。

五、整体总结

本次为标准RL型AVL失衡矫正,核心流程固定不变:
右左失衡优先右旋右侧子节点拉直折线,再左旋顶层失衡节点收拢高度。
全程严格遵循BST数值规则与AVL平衡规则,插入位置规范、旋转逻辑标准,最终树形结构稳定合法。

四类旋转速记

  1. LL左左:右旋失衡节点
  2. RR右右:左旋失衡节点
  3. LR左右:先左旋左子节点,再右旋失衡节点
  4. RL右左:先右旋右子节点,再左旋失衡节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值