当前位置: 首页 > news >正文

【数据结构】平衡二叉树

一、平衡二叉树 完整定义

平衡二叉树,简称 AVL 树,是改良版二叉排序树满足两个硬性条件:
具备二叉排序树性质
左子树所有结点值 < 根 < 右子树所有结点值
具备平衡性质
任意结点的左、右子树高度差的绝对值 ≤ 1
左右子树,也必须是平衡二叉树


二、核心概念:平衡因子

公式(死记,不能写反)
平衡因左子树高度右子树高度
合法范围
BF∈{−1, 0, 1}
BF=1:左子树更高(左偏)
BF=0:左右等高(完全平衡)
BF=−1:右子树更高(右偏)

∣BF∣≥2:树失衡,必须旋转调整


三、为什么需要 AVL 树

普通二叉排序树 BST
有序序列插入会变成斜树,查找复杂度退化到 O(n)
AVL 树强制平衡
始终控制树高为 O(log 2 n)
查找、插入、删除稳定高效


四、四大失衡类型 + 完整旋转操作

插入新结点后,从下往上找第一个失衡结点,以该结点为根调整
1. LL 型 左左失衡
成因:在左子树的左子树插入结点
失衡特征:根结点 BF=2,

左孩子 BF=1
调整方式:单次右旋转
原理:
左孩子上位,原根下沉为右孩子,左孩子的右子树过继给原根左子树
2. RR 型 右右失衡
成因:在右子树的右子树插入结点
失衡特征:根结点 BF=−2,

右孩子 BF=−1

调整方式:单次左旋转
原理:
右孩子上位,原根下沉为左孩子,右孩子的左子树过继给原根右子树
3. LR 型 左右失衡
成因:在左子树的右子树插入结点
失衡特征:根 BF=2,

左孩子 BF=−1
调整方式:两次旋转
① 先对左子树 左旋 → 转为 LL 型
② 再对根结点 右旋
4. RL 型 右左失衡
成因:在右子树的左子树插入结点
失衡特征:根

BF=−2,右孩子
BF=1
调整方式:两次旋转
① 先对右子树 右旋 → 转为 RR 型
② 再对根结点 左旋


极简口诀
同侧单旋,异侧双旋LL 右,RR 左LR 先左后右,RL 先右后左


五、插入与删除的区别

插入操作
只会导致一处失衡,最多两次旋转即可全局平衡,向上回溯只走一层
删除操作
会导致祖先链连续失衡,需要逐层向上回溯、多次旋转,调整次数更多


六、高度与时间复杂度

设总结点数 n
AVL 树最大高度:h≈1.44log 2 n
查找、插入、删除时间复杂度:稳定 O(log 2 n)
对比 BST
BST:最好 O(logn),最坏 O(n)
AVL:无最坏退化,严格平衡


七、超级重要 易错注意点

旋转绝对不能破坏二叉排序树规则
所有旋转后,仍必须满足:左 < 根 < 右
平衡因子计算严禁写反
只能:左高 − 右高,写反整题全错
找失衡结点顺序:从插入结点向上找第一个
∣BF∣≥2的结点
平衡二叉树树形不唯一,平衡方案不唯一,但平衡规则固定
AVL 树是高度平衡,不是完全二叉树、不是满二叉树
平衡因子需要每次旋转后重新更新


八、BST 与 AVL 树对比总结

http://www.jsqmd.com/news/713879/

相关文章:

  • 7分钟精通暗黑破坏神2存档编辑器:打造你的专属游戏体验
  • 游戏资源编辑新手指南:用ExtractorSharp打造个性化游戏补丁
  • 终极Vulkan显存测试工具:memtest_vulkan完整指南
  • 别再傻傻分不清!Win32键盘编程:虚拟键码、扫描码、ASCII码到底啥关系?
  • 从CFD结果到动态模型:手把手教你用MATLAB Simulink玩转Fluent数据交互
  • Vivado 2021.1 下,手把手教你用AXI接口搞定Xilinx DDR4 MIG IP核(附完整配置流程)
  • Stata实证分析保姆级代码包:从描述性统计到异质性检验,一键复现论文结果
  • 设备驱动开发字符设备与块设备
  • 收藏|2026年新版春招大变局!后端程序员必看,大模型已成上岸刚需
  • VirtualRouter终极指南:3分钟将Windows电脑变身高性能WiFi热点
  • 告别2空格!保姆级教程:在Windows/Mac上永久修改STM32CubeMX代码生成模板为4空格缩进
  • 斐波那契准晶压缩算法:高效数据压缩新方法
  • 深入AutoSar BSW:CAN TP模块的同步与异步传输模式到底该怎么选?
  • 告别刘海和单手模式卡顿:Android 12 WMS新Feature如何优化你的系统UI体验
  • 中文LLaMA-Alpaca:从词表扩展到指令微调,打造本地化大语言模型
  • 解锁微信聊天记录:开源工具WeChatExporter的技术解密与实战指南
  • 智能体蜂群架构:构建大规模异构AI协同系统的核心原理与实践
  • 海思Hi3731V110 RISC-V电视芯片解析与设计实践
  • ScreenClaw:基于百分比坐标网格的AI视觉自动化中间件实践
  • 高端LED封装自动化产线功率MOSFET选型方案——精密、高效与可靠驱动系统设计指南
  • 2024必看!AI写专著工具推荐,20万字专著轻松一键生成
  • 2026高并发系统全链路压测平台对比与瓶颈定位 - 领先技术探路人
  • WeChatMsg:如何让微信聊天记录成为你的数字记忆博物馆?
  • AI大模型从入门到精通:新手必备,收藏学习路线图!
  • Zengram:构建多智能体共享记忆中枢,解决AI协作信息孤岛
  • 专栏B-产品心理学深度-05-伦理边界
  • ADS 2024实战:手把手教你搞定CGH40010F的Doherty功放仿真与版图(附避坑指南)
  • 哔咔漫画下载器终极指南:如何用3个步骤打造你的个人漫画图书馆
  • PyCharm 2026.1 新版本安装激活使用教程:完美适配 Python 3.13 自由线程模式(2026.4 更新)
  • 三步永久备份你的QQ空间:告别数据丢失,完整保存青春记忆