数据结构第 7 章:查找总览
本章是考研命题的重点(教材复习提示原话)。四块用户点名的重点——二叉排序树、红黑树、B 树 / B+树、散列表——全部在这一章。
大纲原文与教材的复习提示
【考纲内容】(一)查找的基本概念(二)顺序查找法(三)分块查找法(四)折半查找法(五)树形查找:二叉搜索树、平衡二叉树、红黑树(六)B 树及其基本操作、B+树的基本概念(七)散列(Hash)表(八)查找算法的分析及应用
教材【复习提示】给了逐项的深度要求,这是本章最省时间的一段话:
| 内容 | 要求的深度 |
|---|---|
| 折半查找 | 掌握过程、构造判定树、分析 ASL |
| 二叉排序树、二叉平衡树、红黑树 | 了解概念、性质和相关操作 |
| B 树 | 本章难点;考研大纲要求掌握插入、删除和查找的操作过程 |
| B+树 | 仅要求了解基本概念和性质 |
| 散列查找 | 掌握构造、冲突处理方法(各种方法的处理过程)、成功与不成功的 ASL、特征和性能分析 |
照这张表分配时间:B 树和散列表要动手练,红黑树只要「了解」,B+树只背差异表。
页面导航
| 节 | 页 | 一句话 |
|---|---|---|
| 7.1 | 查找的基本概念 | ASL 是全章唯一的尺子 |
| 7.2.1 + 7.2.3 | 顺序查找与分块查找 | 唯一不挑存储结构的方法;分块 = 顺序 + 一层索引 |
| 7.2.2 | 折半查找 | 判定树:把查找变成数结点 |
| 7.3.1 | 二叉排序树 | 后面三节的共同祖先 |
| 7.3.2 | 平衡二叉树 | 插入调一次,删除可能回溯到根 |
| 7.3.3 | 红黑树 | 按叔结点颜色分三种情况 |
| 7.4.1 | B 树及其基本操作 | 分裂长高、合并变矮,都只在根 |
| 7.4.2 | B+树的基本概念 | 子树 = 关键字,一切差异由此派生 |
| 7.5.1 + 7.5.2 | 散列表的基本概念与散列函数 | 不靠比较定位; |
| 7.5.3 | 处理冲突的方法 | 开放定址 vs 拉链,堆积的归因;双散列遍历全表的互素条件 |
| 7.5.4 | 散列查找及性能分析 | 三个分母: |
| — | 📖 第 7 章名词库 | 61 条名词 + 45 行范围限定清单 |
全章的三条线
① ASL 是唯一的尺子
方法在变,量法不变。每一节都要给出两个
flowchart LR A["7.1 定义 ASL"] --> B["7.2 顺序 / 折半 / 分块"] A --> C["7.3 BST / AVL / 红黑树"] A --> D["7.4 B 树 / B+树"] A --> E["7.5 散列表"] B --> F["判定树上数结点"] C --> F D --> G["数磁盘存取次数<br/>= 层次数"] E --> H["数探测次数<br/>分母是值域 p"] classDef root fill:#ffcdd2,stroke:#b71c1c,stroke-width:3px classDef norm fill:#e3f2fd,stroke:#1565c0 classDef end2 fill:#c8e6c9,stroke:#1b5e20 class A root class B,C,D,E norm class F,G,H end2
② 「虚构 个失败结点」出现了三次
| 出处 | 叫法 | 数量 |
|---|---|---|
| 7.2.2 折半查找 | 方形叶结点 / 失败结点 | |
| 7.3.3 红黑树 | 外部叶结点 / NULL 结点 | |
| 7.4.1 B 树 | 不带信息的叶结点 / 失败结点 |
三处的作用完全一样:把「查找失败」变成一个可以指到的位置,从而让「查找长度」这个量对失败也有定义。B 树的最大高度公式正是靠这一条把层数和关键字数接起来的。
③ 树形查找的谱系:都是 BST 加约束
flowchart TD BST["7.3.1 二叉排序树<br/>无约束,可退化成单支树"] BST -->|"加:高度差 ≤ 1"| AVL["7.3.2 平衡二叉树<br/>高度平衡"] BST -->|"加:五条红黑性质"| RB["7.3.3 红黑树<br/>适度平衡"] BST -->|"加:多路 + 同层叶结点"| B["7.4.1 B 树<br/>为磁盘而设"] B -->|"数据下沉到叶 + 叶间链表"| BP["7.4.2 B+树<br/>为数据库而设"] AVL -.->|"放宽约束<br/>降低调整频率"| RB classDef base fill:#ffcdd2,stroke:#b71c1c,stroke-width:3px classDef norm fill:#e3f2fd,stroke:#1565c0 class BST base class AVL,RB,B,BP norm
四者的插入删除全都以 BST 的插入删除为第一步,再补一段调整。 记住这一句,7.3 和 7.4 的四套操作就只剩「调整那一段」需要单独记。
计算模板总表
| 结构 | 分母 | ||
|---|---|---|---|
| 一般顺序查找 | — | ||
| 有序线性表顺序查找 | 失败结点 | ||
| 折半查找 | 判定树上数到父结点 | 成功 | |
| 分块查找 | — | — | |
| BST(最坏) | 同判定树 | 成功 | |
| 散列表 | 成功 |
| 结构 | 高度公式 |
|---|---|
| 折半判定树 | |
| AVL 最少结点 | |
| 红黑树 | |
| B 树 | |
| 散列表 |
高频边界(按易错程度排序)
第一组 · 分母(本章最高频失分点)
- 成功除
,失败不除 ——判定树类除 ,散列表除值域大小 。 - 装填因子
,分母是表长,第三个分母。 - 散列表一道题里
、 、 同时出现。
第二组 · 查找长度怎么数
- 数结点不数边,根为 1。
- 判定树上成功数到自己,失败数到父亲。
- 散列表空位本身算一次比较。
第三组 · 存储结构与有序性
- 顺序查找:两者都不要求;有序线性表的顺序查找可以是链式。
- 折半查找:有序 + 随机存取,两个条件独立且都必需。
- 分块查找:块间有序、块内无序,第二步不能折半。
第四组 · 插入与删除的不对称
- AVL:插入最多调一次,删除可能一路回溯到根。
- 红黑树:插入破坏性质 ④,删除破坏性质 ⑤。
- B 树:分裂只让树长高,合并只让树变矮,都只发生在根。
- BST:删除后再插入同一关键字,树一般会变。
第五组 · 定义里的一个词
- BST:左子树「所有结点」小于根,不只是左孩子。
- 平衡因子:左减右。
- 黑高:「不含该结点」。
阶: 是子树数。 - B+树:子树数等于关键字数。
- 同义词:
相等,与存放位置无关。
第六组 · 教材与真题的口径分歧
- B 树的「叶结点」:教材 = 失败结点;408 真题 = 最底层的终端结点(教材脚注明说)。
- B+树分支结点存最大值(王道口径),工程实现常存最小值。
- 红黑树的删除教材标
*且注明「考查概率较低」。
复习顺序
- 7.1 — 把 ASL 的定义和「查找长度数结点」钉死。这一步不牢,后面全错。
- 7.2.2 — 判定树。学会圆形/方形两套数法,本章后面反复用。
- 7.2.1 + 7.2.3 — 顺序与分块,重点是三个方法的条件对照。
- 7.3.1 — BST 的定义、三种删除、与折半的四点对比。
- 7.3.2 — 手上练四种旋转,练到不用想。
- 7.3.3 — 五条性质 + 插入三种情况。删除先跳过,教材自己标了
*。 - 7.4.1 — 本章难点,必须动手画:插入分裂、删除的借与并各画三遍。
- 7.4.2 — 只背五点差异表。
- 7.5.1 + 7.5.2 — 四种散列函数,重点分清
与 。 - 7.5.3 — 四种探测 + 拉链,动手填两张表。
- 7.5.4 — 两个 ASL,重点是分母。
- 名词库 — 考前扫 45 行范围限定清单。
只有 5 小时的话:7.1 的 ASL 定义 → 7.2.2 判定树 → 7.4.1 B 树手算 → 7.5.3 + 7.5.4 散列表填表算 ASL → 名词库清单。这五块占本章分值的绝大部分。
链接
- 📖 名词库:第 7 章名词库
- 📗 全书地图:数据结构全书地图
- 📕 教材目录:王道 2026 教材目录(权威参照)
- 🏗️ 施工文档:数据结构笔记体系建设计划(本地资料)