🌲 一、二叉查找树(Binary Search Tree,简称 BST)
📌 定义
二叉查找树是一棵二叉树,它满足这样的特性:
- 每个节点最多有两个子节点(左、右)
- 对于任意一个节点:
- 它左子树的所有节点值都比它小
- 它右子树的所有节点值都比它大
📈 举个例子
复制代码
10/ \5 20/ \ \3 8 25
- 根是10
- 左边是比10小的所有节点
- 右边是比10大的所有节点
- 递归结构也成立(子树也是BST)
✅ 优点
- 中序遍历会得到有序序列
- 插入、查找、删除的平均时间复杂度是 O(log n)
❌ 缺点
- 如果插入的数据本身是有序的(如 1, 2, 3, 4, 5…),树会变得像链表,性能退化成 O(n)
⚖️ 二、平衡二叉树:AVL树
📌 定义
AVL树是最早被提出的自平衡二叉查找树。
- 和BST一样,但它会在插入/删除时自动调整结构&#