平衡二叉树的插入,删除以及平衡调整。

一,平衡二叉树插入失衡情况及解决方案

由于各种的插入导致的不平衡,每次调整都是最小不平衡子树。
LL:由于在结点A的 左孩子的左子树 插入结点导致失衡。

  右单旋:①将A的 左孩子B 向右上旋转 代替A成为根节点
      ②将A结点 向右下旋转 成为B的 右子树 的根节点
      ③B的原来 右子树 成为A的 左子树
在这里插入图片描述

RR:由于在结点A的 右孩子的右子树 插入结点导致失衡。

  左单旋:①将A的 右孩子B 向左上旋转 代替A成为根节点
      ②将A结点 左下旋转 成为B的 左子树 的根节点
      ③B的原来 左子树 成为A的 右子树
在这里插入图片描述

LR:由于在结点A的 左孩子的右子树 插入结点导致失衡。

先左旋后右旋:先让A的左孩子B的右子树的根节点C左上旋提升到B位置,在让C右上旋提升到A位置。
在这里插入图片描述

RL:由于在结点A的 右孩子的左子树 插入结点导致失衡。

先右旋后左旋:先让A的右孩子B的左子树的根节点C右上旋提升到B位置,在让C左上旋提升到A位置。
在这里插入图片描述

二,平衡二叉树删除步骤

①删除结点(方法同二叉排序树)
  1.如果删除的是叶子结点,直接删除。
  2.如果删除的结点只有一颗子树,则用子树顶替删除位置。
  3.如果删除的结点有两颗子树,则直接前驱(或直接后继)结点顶替,并转为对直接前驱(或直接后继)的删除。
②一路向北(上)找到最小不平衡子树,找不到就结束。
③找到最小不平衡子树下,“个头最大”的儿子和孙子。
④根据孙子位置,调整平衡(孙子相对于爷位置LL,RR,LR,RL)。
  1.如果孙子在LL,儿子右单旋。
  2.如果孙子在RR,儿子左单旋。
  3.如果孙子在LR,孙子先左旋后右旋。
  4.如果孙子在RL,孙子先右旋后左旋。
⑤如果不平衡向上传导,继续②。
在这里插入图片描述

三,平衡二叉树删除实例

1.RR型

在这里插入图片描述

1.RL型

在这里插入图片描述

1.平衡向上传导

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值