D
AI
学习工作台
数据结构2026-03-171 分钟阅读

树形数据结构

二叉树、BST、AVL 与红黑树

二叉树BSTAVL红黑树记笔记标记疑惑

二叉树基础

二叉树每个节点最多有两个子节点。满二叉树每层节点数达到最大;完全二叉树除最后一层外满,最后一层从左到右连续。

遍历方式:前序(根-左-右)、中序(左-根-右)、后序(左-右-根)、层序(BFS)。中序遍历二叉搜索树可得有序序列。

二叉搜索树(BST)

BST 满足:左子树所有节点 < 根 < 右子树所有节点。查找、插入、删除平均 O(log n),但最坏 O(n)——退化为链时。

删除分三种情况:无子节点直接删;一个子节点用子节点替代;两个子节点用后继(右子树最小)或前驱替代,再递归删除后继节点。

AVL 树

AVL 是自平衡 BST,保证任意节点左右子树高度差不超过 1。通过旋转恢复平衡:左旋、右旋、左右双旋、右左双旋。

平衡因子 = 左高 - 右高,插入/删除后若 |平衡因子| > 1 则旋转。AVL 查询效率高,但插入删除可能引发多次旋转,写操作开销大。

红黑树

红黑树通过五条规则保持近似平衡:节点红或黑;根和叶(NIL)为黑;红节点的子节点必为黑;任意节点到叶的路径黑节点数相同。

插入/删除通过变色和旋转维护规则。相比 AVL,红黑树允许更大高度差,旋转次数少,插入删除更高效,广泛应用于 STL map、Java TreeMap、Linux 内核等。

知识卡片

问题

BST 的中序遍历结果有什么特点?

点击翻转查看答案

答案

得到有序序列。左子树 < 根 < 右子树,中序遍历即按左-根-右顺序访问,自然得到升序。

问题

AVL 和红黑树在平衡策略上有何不同?

点击翻转查看答案

答案

AVL 严格平衡,任意节点左右子树高度差 ≤1;红黑树允许局部不平衡,通过颜色和旋转规则保证整体 O(log n) 高度。

问题

为什么工程中红黑树比 AVL 更常用?

点击翻转查看答案

答案

红黑树插入/删除旋转次数少,写操作更高效;AVL 查询略快但维护成本高。STL map、Java TreeMap 均用红黑树。