平衡二叉树

本文介绍了平衡二叉树的概念,特别是AVL树,其特点是左右子树高度差不超过1。当插入节点导致不平衡时,通过四种旋转方式——LL旋转、RR旋转、LR旋转和RL旋转来重新平衡。这些旋转确保了二叉排序树的特性,并保持查找效率在O(log2n)。此外,分析了平衡二叉树的查找效率和结点数量的关系。
摘要由CSDN通过智能技术生成

目录

定义:

四种情况

(1)LL平衡旋转(右单旋转)

(2)RR平衡旋转

(3)LR旋转:

(4)RL旋转

查找效率分析

小结

下一篇:哈夫曼树与编码


定义:

平衡二叉树(Balanced Binary Tree),简AVL树,树上任一结点的左子树和右子树的高度之差不超过1

 

平衡因子=左子树高-右子树高,所以平衡二叉树的平衡因子只可能是-1、0或1,只要平衡因子的绝对值大于1就不是平衡二叉树

 

在二叉排序树中插入新结点后,如何保持平衡?

调整最小不平衡子树:从插入结点往回找到第一个不平衡结点,调整以该结点为根的子树

 

 

四种情况

在调整后还必须满足二叉排序树的特性

以下都假设A为最小不平衡子树

(1)LL平衡旋转(右单旋转)

如图将A的左孩子B向右上旋转,B代替A作为根结点,将A结点右下旋转称为B的右子树根结点,B的原右子树作为A结点的左子树

 

(2)RR平衡旋转

A左旋,B作为根结点,A作为B的左子树,B的原左子树作为A的右子树

左旋右旋代码思路:

 

(3)LR旋转:

先左后右双旋转,如图:

 

c结点先左旋替代B在右上旋代替A结点,旋转方法与之前一样

注:这里是将C左旋再右旋不是B,即不平衡子树的右子树结点,RL旋转也是差不多的意思

(4)RL旋转

先右后左双旋转:

如图将C右上旋转到B的位置,再把C左上旋转到A的位置

 

查找效率分析

若树高h,最坏情况为O(h)

使用nh表示深度为h的平衡二叉树中含有的最少结点数

递推一下

n0=0,n1=1,n2=2

且nh=nh-1+nh-2+1,即为根结点+左子树+右子树

可证明平均查找长度为O(log2n)

 

小结

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值