平衡二叉查找树 (AVL Tree)

本文介绍了AVL树的概念,它是一种自我平衡的二叉查找树,确保了左右子树的高度差不超过1。文章详细阐述了四种失衡情况:LL、RR、LR和RL,并提供了相应的旋转算法——左单旋、右单旋、LR旋转和RL旋转,用于在插入节点后恢复平衡。此外,还展示了如何通过C++实现这些旋转操作。最后,给出了一道关于AVL树插入操作后根节点的样例问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 平衡二叉查找树(AVL Tree)

平衡二叉查找树是空树或者一种结构平衡的二叉查找树,即叶节点高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

如果在AVL树中进行插入或删除节点,可能导致AVL树失去平衡,这种失去平衡的二叉树可以概括为四种姿态:LL(左左)、RR(右右)、LR(左右)、RL(右左)。

LL:LeftLeft,也称“左左”。插入或删除一个节点后,根节点的左孩子(Left Child)的左孩子       (Left Child)还有非空节点,导致根节点的左子树高度比右子树高度高2,AVL树失去平衡。

RR:RightRight,也称“右右”。插入或删除一个节点后,根节点的右孩子(Right Child)的右孩子 (Right Child)还有非空节点,导致根节点的右子树高度比左子树高度高2,AVL树失去平衡。

LR:LeftRight,也称“左右”。插入或删除一个节点后,根节点的左孩子(Left Child)的右孩子(Right Child)还有非空节点,导致根节点的左子树高度比右子树高度高2,AVL树失去平衡。

RL:RightLeft,也称“右左”。插入或删除一个节点后,根节点的右孩子(Right Child)的左孩子(Left Child)还有非空节点,导致根节点的右子树高度比左子树高度高2,AVL树失去平衡。

平衡二叉树的最少结点数:n(h)=n(h-1)+n(h-2)+1

给定结点数为n的AVL树的最大高度为O(log2 n)

平衡二叉树的调整

左单旋

treePtr singleLeft(treePtr T){
	treePtr tmpPtr;
	tmpPtr = T;
	T = T->Left;
	tmpPtr->Left = T->Right;
	T->Right = tmpPtr;
	tmpPtr->H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值