平衡二叉树(AVL树)

目录

1.什么是平衡二叉树?

定义:

2.平衡二叉树的性质 

3.平衡二叉树的调整

RR旋转

LL旋转

LR旋转

RL旋转 

秒解法 


1.什么是平衡二叉树?

        当我们以不同次序将结点插入二叉树时,会导致出现不同的搜索树,以至于每一种树都有一种平均搜索长度ASL,那么什么情况下树的搜索长度最小呢? 

〖例〗搜索树结点不同插入次序,将导致不同的深度和平均查找长度ASL 

可以看到当左右子树的高度差不超过1时就能达到我们的要求,也就是平衡二叉树了。 

定义:

平衡因子(Balance Factor,简称BF): BF(T) = hL-hR, 其中hL和hR分别为T的左、右子树的高度。”

平衡二叉树(Balanced Binary Tree)(AVL树

        空树,或者

        任一结点左、右子树高度差的绝对值不超过1,即|BF(T) |≤ 1

2.平衡二叉树的性质 

结点为n的平衡二叉树最高为log2n。 

3.平衡二叉树的调整

         当我们对一个二叉搜索树进行插入的时候,虽然满足了搜索树的要求,但是却破坏了平衡二叉树这个平均搜索效率高的特性,所以我们需要对这个“平衡被破坏的树”进行调整。

注意:有时候插入元素即便 不需要调整结构,也可能需要重新计算 一些平衡因子。

RR旋转

 〖例〗不平衡的“发现者”是Mar, “麻烦结点”Nov 在发现者子树的右边, 因而叫 RR 插入,需要RR 旋转(右单旋)

 具体图示:

LL旋转

 〖例〗“发现者”是Mar, “麻烦结点”Apr 在发现者左子树左边, 因而叫 LL 插入,需要LL 旋转(左单旋)

具体图示:

LR旋转

 〖例〗“发现者”是May, “麻烦结点”Jan在左子树的右边, 因而叫 LR 插入,需要LR 旋转

 具体图示:

RL旋转 

 

        综上,无论是多么复杂的旋转,其目的就是为了将一个二叉排序树调整平衡 ,但是有可能这么些个方法记不住,那么还有以下方法来解决。

秒解法 

        以正确的方式对二叉排序树插入结点,从插入的结点开始往上找到不平衡的子树的根节点为路径,以该根节点为开始路径上的三个结点直接进行调整 ,调整完将树回去(其余的子节点按规则插入)。

〖例〗

 〖例〗

 〖例〗

 〖例〗

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值