【数据结构】平衡二叉树(AVL树)

1.平衡二叉树:或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树:
⑴ 根结点的左子树和右子树的深度最多相差1;
⑵ 根结点的左子树和右子树也都是平衡二叉树。
2.平衡因子:结点的平衡因子是该结点的左子树的深度与右子树的深度之差。
3.结点的平衡因子=HL-HR
4.在平衡树中,结点的平衡因子可以是1,0,-1。
5.最小不平衡子树:在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子的绝对值大于1的结点为根的子树。

基本思想:

在构造二叉排序树的过程中,每插入一个结点时,首先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡子树,在保持二叉排序树特性的前提下,调整最小不平衡子树中各结点之间的链接关系,进行相应的旋转,使之成为新的平衡子树。
设结点A为最小不平衡子树的根结点,对该子树进行平衡调整归纳起来有以下四种情况:

  1. LL型
  2. RR型
  3. LR型
  4. RL型

LL

在这里插入图片描述

B=A->lchild;
 A->lchild=B->rchild; 
 B->rchild=A;
A->bf=0;   B->bf=0if  (FA==NULL)   root=B; 
 else  if  (A==FA->lchild)    FA->lchild=B; 
else  FA->rchild=B; 

RR

在这里插入图片描述

B=A->rchild;
 A->rchild=B->lchild;
 B->lchild=A;
 A->bf=0;   B->bf=0if  (FA==NULL)   
		root=B; 
else  if  (A==FA->lchild) 
		  FA->lchild=B; 
         else
		  FA->rchild=B; 

LR

在这里插入图片描述

  B=A->lchild;C=B->rchild;
  B->rchild=C->lchild;
  A->lchild=C->rchild;
  C->lchild=B;    C->rchild=A; 

RL

在这里插入图片描述

  B=A->rchild;    
  C=B->lchild;
  B->lchild=C->rchild;
  A->rchild=C->lchild;
  C->lchild=A;  C->rchild=B; 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值