平衡二叉树(AVL树,AVL树旋转)

1、平衡因子(BF):BF = HL - HR(其中HL和HR分别是左子树和右子树的高度)。

2、平衡二叉树(AVL树):对于任一结点,左右子树的高度差的绝对值是小于1。 即 |BF|<=1。

例:1、
这里写图片描述
对于3这个结点来讲,左子树高度为2,右子树高度为0,左右子树高度差为2,2>1,所以该树不是平衡二叉树。

2、
这里写图片描述
对于这个树里面的每一个结点来讲,左右子树的高度差都小于等于1,所以该树是平衡二叉树 。

3、高度为h的平衡二叉树的最小结点数:N(h) = N(h-1)+N(h-2)+1 。其中N(h-1) 和N(h-2)分别是高度为(h-1)和高度为(h-2)的最小结点数。可以推导出——给定结点数为 n的AVL树的最大高度为O(log2n)!

4、平衡二叉树的调整:
(1)、右单旋:不平衡的“发现者”是Mar,“麻烦结点”Nov 在“发现者”右子树的右边,因而叫 RR 插入,需要RR 旋转(右单旋)
这里写图片描述
这里写图片描述这里写图片描述
!!!这种也叫作在“发现者”(被破坏者)的右子树的右子树上

一般调整情况:
这里写图片描述
注意:调整过后还是要保证是一颗搜索树,即左子树的值小于右子树的值。

(2)、左单旋:“发现者”是Mar,“麻烦结点”Apr 在发现者左子的左边,因而叫 LL 插入,需要LL 旋转(左单旋)
这里写图片描述
!!!这里存在两个被破坏者,但是只调整了离破坏者最近的结点,这样调整后整颗树也是平衡二叉树了。

一般调整情况:
这里写图片描述

(3)、LR旋转:“发现者”是May,“麻烦结点”Jan在左子树的边,因而叫 LR 插入,需要LR 旋转
这里写图片描述

一般调整情况:
这里写图片描述

(4)、RL旋转:插入的结点在被破坏者的右子树的左子树上。
这里写图片描述

一般的调整情况:
这里写图片描述

关于二叉平衡树的实现将在后面补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值