数据结构--平衡二叉树

目录

一. 前言

二. 平衡二叉树的调整


一. 前言

        平衡二叉树又称AVL树(Adelson-Velskii and Landis)。

一棵平衡树可以是空树也可以是具有下列性质的二叉排序树(所以二叉平衡树首先得是二叉排序树):

1)左子树与右子树的高度之差的绝对值小于等于1;

2)左子树和右子树也是平衡二叉排序树。

这里为了方便起见,给这个结点左子树和右子树的高度差起一个名字,叫结点的平衡因子(BF)。

二. 平衡二叉树的调整

        当我们在一个平衡二叉树上插入一个结点时,就有可能导致这个平衡二叉树失衡,也就是BF的绝对值大于1了。因此在失衡后,我们就需要再对这棵树进行结构调整,使它重新成为一棵平衡二叉树。

根据插入位置的不同,我们失衡的类型主要有四种,分别为LL型,LR型,RL型,RL型。其中LL型就是在一个结点的左子树的左子树上插入一个结点,使这个结点成为了失衡结点。

如下所示:

上图中,所有A点的BF值的绝对值都大于了1,所以都为失衡结点。

下面我们来学习下各种失衡类型下,我们该如何调整。

调整的原则首先就是得降低高度,使它不再失衡,然后还需继续保持二叉排序树(在我之前的文章中就讲过)的性质。

以上图为例:LL型调整的主要思路就是,B结点带上它左子树C一起上升,然后A结点就成为了B结点的右子树,原来B结点的右子树就成为A的左子树,因为这里没有,所以就为空。

RR型调整的主要思路就是:B结点带右子树C一起上升,然后A结点成为B的左子树,原来B结点要是有左子树,那就作为A的右子树。

LR型调整的主要思路就是:C穿过A,B结点上升,B成为C的左子树,A成为C的右子树。原来C结点的左子树作为B的右子树,原来C结点的右子树作为A的左子树。

RL型调整跟LR调整差不多,只需换个位置即可。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值