数据结构
平衡二叉树AVL
这篇笔记面向正在学习数据结构和索引原理的读者,梳理 AVL 树作为自平衡二叉搜索树的基本定义、操作流程与应用价值。正文先用“任意结点左右子树高度差不超过 1”界定平衡条件,并引入高度和平衡因子 BF,说明 AVL 通过保持树高接近对数级来让查找、插入、删除稳定在 O(log n)。在基本操作部分,查找沿用普通 BST 的比较路径,不需要旋转;插入则先按 BST 规则放置新节点,再自底向上更新高度和 BF,一旦出现 |BF|>1 就在局部执行单旋或双旋。文章重点拆分 LL、RR、LR、RL 四种失衡形态:左左和右右分别用一次右旋或左旋修复,左右和右左则需要先处理子节点方向再旋转失衡节点。删除部分强调先按 BST 的叶子、单孩子、双孩子规则完成结构删除,再回溯检查平衡,且一次删除可能在多层触发旋转。最后,笔记把 AVL 的高度控制思想延伸到 B 树、B+ 树和 MySQL InnoDB、PostgreSQL、SQLite 等索引场景,帮助读者理解平衡树为什么适合动态有序且频繁增删的数据维护。