Skip to content

附录 B · 高频考点 · 易错点 · 速查总表 ​

本附录把六级六章的「考点总结表」聚合为一张总表,并补充跨章易错点与考前速查卡。 星级说明:⭐⭐⭐⭐⭐ 必考压轴;⭐⭐⭐⭐ 高频;⭐⭐⭐ 中频;⭐⭐ 了解。


一、五星考点 TOP 榜(必看必背) ​

#考点出处一句话记忆
1二叉树性质 n₀ = n₂ + 1第 2 章叶子数 = 度为 2 的节点数 + 1
2前序 + 中序 → 还原二叉树第 2 章前序找根,中序分左右,递归下去
3哈夫曼树构造与 WPL第 3 章每次取最小的两个合并;WPL = 非叶节点权之和
4完全二叉树父子编号:左 2i、右 2i+1、父 ⌊i/2⌋第 3 章数组存树就靠它
5BST 中序遍历 = 升序第 3 章判断一棵树是不是 BST 的最快方法
6DFS vs BFS 选择:求最短 → BFS第 4 章层序扩散,第一次到达即最短
7visited 标记第 4 章忘记标记 = 死循环 / 重复访问
801 背包一维必须逆序第 5 章顺序就变成完全背包
9构造:父 → 子;析构:子 → 父第 6 章顺序题必考
10多态三条件:virtual + 重写 + 父类指针/引用第 6 章少一个就不是多态
11循环队列判满:(rear+1) % size == front第 7 章牺牲一个存储位换"空满可分辨"
12循环队列元素个数:(rear - front + size) % size第 7 章加 size 再取模,防负数

二、逐章考点 · 易错点总表 ​

1. 第 2 章 树的基本概念与遍历 ​

考点星级出题形式易错点
树的基本术语(根、叶、度、深度)⭐⭐⭐选择/填空深度和高度搞混
树的性质:n 节点 n−1 条边⭐⭐⭐选择/判断公式记错
二叉树定义(度 ≤ 2,左右有序)⭐⭐⭐⭐选择/判断左右子树有顺序
满二叉树 vs 完全二叉树⭐⭐⭐⭐选择/判断谁是谁的子集搞反
n₀ = n₂ + 1⭐⭐⭐⭐⭐选择/计算高频,公式记牢
第 i 层最多 2^(i−1) 个节点⭐⭐⭐⭐选择/计算注意是"第 i 层"不是深度 k
深度 k 最多 2^k − 1 个节点⭐⭐⭐⭐选择/计算与上一条区分
三种递归遍历(前/中/后序)⭐⭐⭐⭐⭐选择/程序阅读/代码填空遍历顺序记混
层序遍历(队列实现)⭐⭐⭐⭐选择/程序阅读用队列不是栈
前序 + 中序还原二叉树⭐⭐⭐⭐⭐选择/程序填空(压轴)找根、分左右的过程
后序 + 中序还原二叉树⭐⭐⭐⭐⭐选择/程序填空后序最后一个是根
完全二叉树深度公式⭐⭐⭐⭐选择/计算⌊log₂n⌋ + 1

2. 第 3 章 哈夫曼树与特殊树 ​

考点星级出题形式易错点
哈夫曼树构造过程⭐⭐⭐⭐⭐选择/计算每次选最小的两个合并
WPL 计算⭐⭐⭐⭐⭐选择/计算权×深 或 非叶节点和(两种等价)
哈夫曼树特点(无度 1 节点)⭐⭐⭐⭐选择/判断总节点数 = 2n − 1
哈夫曼编码(前缀编码)⭐⭐⭐⭐选择/判断左 0 右 1;高频编码短
完全二叉树定义⭐⭐⭐⭐选择/判断和满二叉树的关系
完全二叉树父子编号关系⭐⭐⭐⭐⭐选择/计算左 2i、右 2i+1、父 ⌊i/2⌋
完全二叉树深度⭐⭐⭐⭐选择/计算⌊log₂ n⌋ + 1
BST 定义(左小右大)⭐⭐⭐⭐⭐选择/判断是"所有"左子树节点都小
BST 中序遍历 = 升序⭐⭐⭐⭐⭐选择/程序阅读高频,必须记住
BST 删除操作⭐⭐⭐⭐选择/代码填空两孩情况找替代(右最左 / 左最右)
格雷码生成公式⭐⭐⭐选择/计算G(n) = n XOR (n >> 1)

3. 第 4 章 搜索算法 ​

考点星级出题形式易错点
DFS 核心思想⭐⭐⭐⭐⭐选择/判断深度优先,一条路走到黑
DFS 实现(递归 / 栈)⭐⭐⭐⭐⭐代码填空/编程递归终止条件
BFS 核心思想⭐⭐⭐⭐⭐选择/判断层序扩散,先近后远
BFS 实现(队列)⭐⭐⭐⭐⭐代码填空/编程入队出队顺序
DFS vs BFS 对比⭐⭐⭐⭐⭐选择/判断最短路径用 BFS
回溯法三步曲⭐⭐⭐⭐选择/编程选择 → 递归 → 撤销
visited 标记访问⭐⭐⭐⭐⭐代码填空忘记标记导致死循环
方向数组 dx/dy⭐⭐⭐⭐代码填空边界判断不能少
最短路径(BFS)⭐⭐⭐⭐⭐编程题dist 数组初始化为 −1
迷宫问题⭐⭐⭐⭐⭐编程题边界 + 通路 + 未访问,三条件缺一不可
二叉树 DFS 遍历⭐⭐⭐⭐选择/程序阅读前中后序
二叉树 BFS 层序⭐⭐⭐⭐选择/程序阅读队列实现

4. 第 5 章 简单动态规划 ​

考点星级出题形式易错点
DP 两个核心要素⭐⭐⭐⭐⭐选择/判断最优子结构 + 重叠子问题
DP vs 贪心⭐⭐⭐⭐选择/判断贪心不回头,DP 考虑所有选择
DP 解题四步骤⭐⭐⭐⭐⭐编程题定状态 → 找转移 → 定初始 → 定顺序
爬楼梯(一维 DP)⭐⭐⭐⭐选择/程序阅读斐波那契变形,初始条件
最大子段和⭐⭐⭐⭐⭐选择/编程答案是 dp 数组最大值,不是最后一个
数字三角形(二维 DP)⭐⭐⭐⭐编程题边界处理,转移方程
01 背包二维转移⭐⭐⭐⭐⭐选择/编程dp[i][j] = max(选, 不选)
01 背包空间优化(一维逆序)⭐⭐⭐⭐⭐代码填空/编程逆序!防止重复选
完全背包(一维顺序)⭐⭐⭐⭐选择/编程顺序!允许重复选
01 背包 vs 完全背包⭐⭐⭐⭐⭐选择/判断遍历方向的区别
滚动数组优化⭐⭐⭐选择/代码填空只用一行,反复利用

5. 第 6 章 面向对象编程基础 ​

考点星级出题形式易错点
面向对象三大特性⭐⭐⭐⭐⭐选择/判断封装、继承、多态
类与对象的关系⭐⭐⭐⭐选择/判断类是模板,对象是实例
访问控制 public/private/protected⭐⭐⭐⭐⭐选择/判断/代码填空class 默认 private,struct 默认 public
封装的意义⭐⭐⭐选择/判断隐藏实现,暴露接口
构造函数⭐⭐⭐⭐⭐选择/程序阅读对象创建时自动调用
析构函数⭐⭐⭐⭐选择/程序阅读对象销毁时自动调用;写作 ~类名()
继承的概念⭐⭐⭐⭐选择/判断子类复用父类代码
构造 / 析构顺序⭐⭐⭐⭐⭐选择/程序阅读构造:父→子;析构:子→父
多态的三个条件⭐⭐⭐⭐⭐选择/判断virtual + 重写 + 父类指针/引用
动态绑定 vs 静态绑定⭐⭐⭐⭐选择/判断多态是动态绑定(运行时)
this 指针⭐⭐⭐⭐选择/代码填空指向当前对象;静态成员函数没有 this
初始化列表⭐⭐⭐选择/代码填空构造函数冒号后面的部分

6. 第 7 章 栈与队列 ​

考点星级出题形式易错点
栈的特性(LIFO)⭐⭐⭐⭐⭐选择/判断和队列搞反
队列的特性(FIFO)⭐⭐⭐⭐⭐选择/判断和栈搞反
栈的基本操作 push/pop/top⭐⭐⭐⭐选择/代码填空pop 不返回值,要先 top
队列的基本操作 push/pop/front⭐⭐⭐⭐选择/代码填空pop 不返回值,要先 front
循环队列判空判满⭐⭐⭐⭐⭐选择/代码填空空 front==rear;满 (rear+1)%size==front
循环队列元素个数⭐⭐⭐⭐⭐选择/计算(rear − front + size) % size
循环队列指针变化⭐⭐⭐⭐⭐代码填空/选择取模:(x+1) % maxSize
牺牲一个存储位⭐⭐⭐⭐选择/判断用来区分空和满
栈的应用(括号匹配、表达式求值)⭐⭐⭐⭐⭐编程题/选择右操作数先弹出
队列的应用(BFS、层序遍历)⭐⭐⭐⭐选择/编程BFS 用队列
优先队列大小顶堆⭐⭐⭐⭐选择/代码填空默认大顶堆;greater<int> 是小顶堆
中缀转后缀(调度场算法)⭐⭐⭐选择/程序阅读运算符优先级

三、选择题 / 判断题「陷阱」20 条 ​

  1. 「深度」从 1 开始数还是从 0 开始数——看清题目给的定义,别默认。
  2. 完全二叉树不一定是满二叉树;满二叉树一定是完全二叉树。
  3. n₀ = n₂ + 1 只对二叉树成立,普通树没有这个性质。
  4. 前序 + 后序不能唯一确定一棵二叉树(必须配中序)。
  5. 哈夫曼树的 WPL 有两种算法(权×路径长度之和 / 非叶节点权之和),答案相同。
  6. 哈夫曼编码是前缀编码:任何一个编码都不是另一个的前缀。
  7. BST 的中序遍历递增;如果题目给的是降序,那它就不是 BST。
  8. BST 删除有两孩节点时,替代节点是右子树最小或左子树最大。
  9. 格雷码 G(n) = n ^ (n >> 1),相邻两个码只差一位。
  10. DFS 用栈(递归栈),BFS 用队列——程序填空题常在这里设陷阱。
  11. BFS 求最短路只对无权图 / 边权相同成立,带权图要 Dijkstra(📚 超纲)。
  12. visited 标记要在入队时做,不是在出队时做(否则同一节点会重复入队)。
  13. 回溯=选择 → 递归 → 撤销。忘记撤销是新手第一大坑。
  14. 最大子段和的答案是 max(dp),不是 dp[n−1]。
  15. 01 背包一维优化倒序;完全背包一维优化正序——方向写反整题皆错。
  16. class 默认 private,struct 默认 public(选择题高频)。
  17. 构造顺序 父→子,析构顺序 子→父(对称,别记反)。
  18. 多态必须满足三个条件,缺 virtual 就变成静态绑定。
  19. pop() 不返回栈顶元素,必须先 top() 再 pop()。
  20. 循环队列牺牲一个存储位后,容量为 size − 1,不是 size。

四、考前 30 分钟速查卡 ​

【树】        n 节点 n−1 边;二叉树 n₀ = n₂ + 1
              第 i 层最多 2^(i−1);深度 k 最多 2^k − 1
              遍历:前 根左右 / 中 左根右 / 后 左右根 / 层序 用队列
【哈夫曼】    每次取最小两个合并;WPL = Σ(权×深) = 非叶节点权之和
              节点总数 2n−1;无度为 1 的节点
【完全二叉树】左孩子 2i、右孩子 2i+1、父 ⌊i/2⌋;深度 ⌊log₂n⌋+1
【BST】       左 < 根 < 右(全体);中序 = 升序;删除两孩找替代
【格雷码】    G(n) = n ^ (n>>1)
【搜索】      DFS 递归/栈(一条路走到黑);BFS 队列(层序,最短路)
              回溯三步:选择 → 递归 → 撤销;visited 入队即标记
【DP】        四步:定状态 → 找转移 → 定初始 → 定顺序
              最大子段和:答案是 max(dp)
              01 背包:一维 + 倒序;完全背包:一维 + 正序
【OOP】       封装 / 继承 / 多态;class 默认 private
              构造 父→子,析构 子→父;多态 = virtual + 重写 + 父类指针
【栈队列】    栈 LIFO,队列 FIFO;pop() 不返回值
              循环队列:空 front==rear;满 (rear+1)%size==front
              元素个数 = (rear − front + size) % size
【考试】      单选 15×2 + 判断 10×2 + 编程 2×25 = 100 分,180 分钟

本表由各章「考点总结表」聚合而成;若与正文冲突,以正文最新修订为准(见附录 E)。

百炼成钢,融会贯通