对应大纲: 2.1.3-2 简单树、2.1.3-3 特殊树(完全二叉树、哈夫曼树、二叉搜索树)
⚠️ 19 套真题里有 18
套考了二叉树——这是初赛的第一大数据结构考点。 S0
说「不必现在学」的那句话,对第一轮是致命的。
| 术语 | 含义 |
|---|---|
| 根 | 唯一没有父亲的结点 |
| 叶子 | 没有孩子的结点 |
| 度 | 一个结点的孩子个数;树的度 = 所有结点度的最大值 |
| 深度 / 高度 | 从根到该结点的层数 |
| 子树 | 某个结点及其所有后代构成的树 |
⚠️ 「根的高度算 1 还是算 0」不统一!题目一定会写明,务必先找那句话。 CSP 2021 第 8 题、CSP 2020 第 12 题、CSP 2023 第 5 题都专门写了「根节点的高度为 1」——就是因为按另一种约定答案会差 1,而差 1 的那个数一定在选项里。
基本性质:
| 性质 | 公式 |
|---|---|
| 第 层最多结点数 | (根为第 1 层) |
| 高度 的二叉树最多结点数 | |
| 度为 0 的结点数 与度为 2 的结点数 |
📝 这条经常单独出题,记住它。
A
/ \
B C
/ \ \
D E F
| 遍历 | 顺序 | 结果 |
|---|---|---|
| 前序(先根) | 根 → 左 → 右 | A B D E C F |
| 中序(中根) | 左 → 根 → 右 | D B E A C F |
| 后序(后根) | 左 → 右 → 根 | D E B F C A |
唯一的方法:
前序的第一个 / 后序的最后一个 = 根。 拿这个根去中序里切一刀,左边是左子树、右边是右子树。 然后对两半递归。
例(CSP 2024 第 12 题):前序
ABDECFG、中序 DBEAFCG
A;中序切开:左 DBE、右
FCGBDE → 根 B,中序
DBE → 左 D、右 ECFG → 根 C,中序
FCG → 左 F、右 GD E B F G C A ✓⚠️ 必须有中序! 前序 + 后序不能唯一确定一棵二叉树。
📝 秒杀技巧:
| 想求 | 先看 |
|---|---|
| 后序 | 最后一位必是根(= 前序的第一位) |
| 前序 | 第一位必是根(= 后序的最后一位) |
| 后序的第一位 | 「最左下角的那个叶子」 |
CSP 2023 第 11 题四个选项结尾都是
A,那招不管用——就改看第一位(E),立刻砍掉两个。
⚠️ 别因为去年做过就套上一年的树形。 CSP 2024 那棵是漂亮的满二叉树,CSP 2023 那棵是歪的——每次都要老实建树。
定义:除最后一层外每层都填满,且最后一层的结点从左往右连续排列(中间不许留空)。
⚠️ 完全二叉树 ≠ 满二叉树。 满二叉树每层都填满(结点数恰为 )。
推论:
| 问 | 答 |
|---|---|
| 编号 的兄弟 | 为偶数 → 兄弟是 ; 为奇数 → 兄弟是 |
| 个结点,有孩子的结点 | 编号 |
| 叶子数 | |
| 高度(根为 1) |
例题速算:
📝 最后那条洞察很值钱:完全二叉树的「结点数 ⇄ 形状」是一一对应的。
⚠️ 顺序存储对非完全二叉树极其浪费。 CSP 2019 第 8 题:一棵只有 6 个结点、但向右下歪的树,数组要开到下标 15。这正是「只有完全二叉树才适合顺序存储」的原因。
构造:每次取出权值最小的两个合并,新结点权值 = 两者之和,放回去;重复到只剩一个。
带权路径长度(WPL) =
技巧一:WPL = 所有「合并出来的新结点」权值之和。
不用画树、不用数深度,把每次合并的和累加起来就是答案。
CSP 2025 第 4 题:权值
| 步 | 合并 | 新权 |
|---|---|---|
| 1 | 22 | |
| 2 | 35 | |
| 3 | 47 | |
| 4 | 82 |
技巧二:给编码选项时,算各选项的加权长度,最小的那个就是哈夫曼编码。
因为哈夫曼编码的定义就是「加权路径长度最小的前缀码」。这比构树再逐个比对快得多。
更快的一步筛法:频率最高的字符,码长必须最短。 CSP 2023 第 10 题里只有选项 A 给频率 45% 的字符 1 位编码——一眼选出。
⚠️ 哈夫曼编码是前缀码:任何一个编码都不是另一个的前缀(保证解码不歧义)。
⚠️ 哈夫曼树的形状可能不唯一(权值相等时),但每个字符的码长是确定的。CSP 2022 第 7 题的选项 C「2 或 3」就是给「感觉不确定」的人准备的陷阱——必须真做一遍合并。
📝 哈夫曼本质上是贪心算法(CSP 2021 第 11 题)。
定义:每个结点的左子树全部小于它、右子树全部大于它。
📝 正因为会退化,才有了平衡树(AVL、红黑树)——那是提高级内容,初赛认识名字即可。
⚠️ 「BST 的中序遍历是有序的」这条经常被用来出反向题:给你一个中序序列问是不是 BST,或者给你一棵树问是不是 BST。判定方法就是做一遍中序遍历看是否升序。
| 概念 | 要点 |
|---|---|
| 森林 | 若干棵不相交的树 |
| 树的孩子兄弟表示法 | 把多叉树转成二叉树:左指针指长子、右指针指兄弟 |
| 三叉树 / 叉树 | 高度 最多 个结点 |
CSP 2023 第 5 题:2023 个结点的三叉树最小高度?
| 高度 | 最多结点 |
|---|---|
| 7 | 1093 —— 装不下 |
| 8 | 3280 —— 装得下 ✓ |
📝 「高度至少为多少」= 把树塞满看第几层够用;「高度至多为多少」= 排成一条链 = 结点数。
ABDECFG + 中序
DBEAFCG,后序是什么?D E B F G C A