说说平衡二叉树

一、定义

保证任意结点的左、右子树的高度差的绝对值不超过1。这个高度差就是平衡因子,取值只可能为-1,0,1。

二、平衡二叉树的插入

由于插入一个结点之后,可能导致二叉树失去平衡,即不满足定义,所以需要进行调整。

需要注意的是:每次调整的对象都是最小不平衡子树,即插入路径上离插入结点最近的平衡因子大于1的结点作为根的子树。

1、LL平衡旋转(右单旋转)
(1)LL平衡旋转就是在结点A的左孩子的左子树上插入一个新结点,导致失衡而需要旋转来进行旋转。
(2)旋转规则:右单旋转,即将A的左孩子B向右上旋转,使得B代替A成为根结点,A结点也因此成为B结点的右子树的根节点,如果B结点之前存在右子树,则将原来的右子树作为A结点的左子树。

《说说平衡二叉树》

2、RR平衡旋转(左单旋转)
(1)RR平衡旋转就是节点A的右孩子的右子树上插入一个新结点,导致失衡而需要旋转来进行旋转。
(2)旋转规则:左单旋转,即将A结点的右孩子B向左上旋转,使得B代替A成为根结点,A结点也因此成为B结点的左子树的根结点,如果B结点之前存在左子树,则将原来的左子树作为A结点的右子树。

《说说平衡二叉树》

可以看到LL平衡旋转和RR平衡旋转的规则正好相反,它们是一个镜像关系。

3、LR平衡旋转(先左后右双旋转)
(1)LR平衡旋转就是节点A的左孩子的右子树上插入一个新结点,导致失衡而需要旋转来进行旋转。
(2)旋转规则:先左后右双旋转,先将A结点的左孩子B的右子树的根结点C向左上旋转提升到B结点的位置,然后再将C结点向右上旋转提升到A结点的位置。

《说说平衡二叉树》

4、RL平衡旋转(先右后左双旋转)
(1)RL平衡旋转就是节点A的右孩子的左子树上插入一个新结点,导致失衡而需要旋转来进行旋转。
(2)旋转规则:先右后左双旋转,先将A结点的右孩子B的左子树的根结点C向右上旋转提升到B结点的位置,然后再将C结点向左上旋转提升到A结点的位置。

《说说平衡二叉树》

可以看到LR平衡旋转和RL平衡旋转的规则正好相反,它们也是一个镜像关系。

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/hp910315/article/details/52264748
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞