平衡二叉树调整笔记

平衡二叉树的定义

1、平衡二叉树是二叉排序树
2、平衡二叉树的平衡因子绝对值小于等于1

平衡二叉树的旋转

最小不平衡子树
最小不平衡子树,因为某个结点的插入导致失衡的最小子树且离插入结点最近的祖先结点,以该结点为根的子树称为最小不平衡子树。

旋转类型
LL型:在左孩子的左子树插入结点导致失衡,进行右旋操作
RR型:在右孩子的右子树插入结点导致失衡,进行左选操作
LR型:在左孩子的右子树插入结点导致失衡,先进行左旋,在右旋
RL型:在右孩子的左子树插入结点导致失衡,先进行右旋,在左旋

旋转方式
左旋:
1.旧根结点变成新根结点(一般为中间结点)的左子树
2.如果新根结点存在左子树则把它,变成旧结根点(旋转的结点)的右子树
(新结点的左子树要比旧结点的值要大,左旋是右单支树,右边的结点都比根结点大)
右旋:
1.旧根结点变成新根结点(一般为中间结点)的右子树
2.如果新根结点存在右子树,则变成旧根结点(旋转的结点)的左子树
(新结点的右子树都比旧结点的值要小,右旋是左单支树,左边的结点都比根要小)

平衡二叉树的调整

LL型
根据二叉排序树的定义,LL型是左单只树,且从根结点开始结点值大小递减,图中{A,B,Bl}。
根据平衡二叉树定义,平衡因子绝对值小于1,所以需要把值最大的根结点A‘掰’下来,同时需要把新根结点B的右孩子Br给旧根结点A的左孩子,变成符合定义的树,这就是所谓的右旋操作
在这里插入图片描述

RR型
同理,RR型是右单只树,从根结点开始结点的值小大递增,图中{A,B,Br},所以需要把值最小的根结点A‘掰’下来,同时需要把新根结点B的左孩子Bl给旧根结点A的右孩子,变成符合定义的树,这就是所谓的左旋操作。
在这里插入图片描述

LR型
LR型,根结点的值是最大的,中间结点的值是最小的,图中{A,B,C}
1.先进行左旋,将下半部分进行旋转,将中间最小值的结点往左下旋转(然后平移),同时将新根结点的左孩子给旧根结点的右孩子,此时树变成了“大-中-小”LL型的单只树形。
2.将{A,C,B}在进行右旋,将值大的根结点A‘掰’下来。
在这里插入图片描述

RL型
RL型,根结点的值是最小的,中间值最大,图中{A,B,C}
1.先进行右旋操作,将下半部分进行旋转,将中间最大值的结点往右下旋转(同时平移),此时树变成了“小-中-大”RR型的单只树。
2.将{A,C,B}在进行左旋,将小的根结点‘掰’下来,将旧的根结点的左孩子给新结点的右孩子。
在这里插入图片描述

参考资料
1、比较不错的平衡二叉树调整的文章:平衡二叉树的调整
2、比较易懂的平衡二叉树调整的文章:图解平衡二叉树调整

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值