本章是一条从概念到算法的学习路径。先修数组、串和递归;每学完一段,用题目验证不变量,再把错题回流到对应锚点。
学习顺序
- 概念与性质:先读树的基本概念与存储,建立结点、度、深度、高度和父子关系。
- 二叉树表示与遍历:再读顺序/链式表示与下标边界、遍历重建;能手算先序、中序、后序、层序并判断唯一性。
- 树/森林转换:沿树与森林转换和遍历关系复习孩子兄弟表示,核对转换前后的访问顺序。
- Huffman/并查集:最后进入Huffman 树与编码和并查集,把贪心合并、WPL、路径压缩与按规模合并串成算法题流程。
学完能做什么
| 能力 | 对应知识点 | 题型范围 |
|---|---|---|
| 根据度数、层数和边数核对树的性质 | ds.05.01 | 结点/边/叶子数量、度与高度判断 |
| 选择顺序或链式存储并处理越界 | ds.05.02 | 0/1 基下标、空指针、父子/兄弟定位 |
| 模拟遍历、重建并写递归/队列算法 | ds.05.03 | 遍历序列、唯一重建、LCA、层高/宽度、完全树 |
| 掌握树存储、树/森林转换与遍历关系 | ds.05.04 | 双亲/孩子/孩子兄弟表示、转换、先根/后根遍历 |
| 解释 Huffman 与并查集的不变量 | ds.05.05 | 最小堆合并与 WPL、find/union、复杂度与边界 |
诊断与错题回流
- 索引或空指针错:回到
#binary-indexing,分别写出 0/1 基公式,并在访问子结点前检查实际n。 - 遍历顺序或重建错:回到
#traversal-reconstruction,标出根和中序切分区间;若只有先序+后序,先检查是否缺少单孩子方向。 - 转换/遍历错:回到
#rule-tree-forest-conversion与#rule-tree-forest-traversal,画一棵最小反例并逐步核对访问顺序。 - 线索前驱/后继错:阅读二叉树的
#threaded-successor,确认ltag/rtag后再判断是否需要双亲指针。 - Huffman/并查集复杂度错:分别回到
#rule-huffman、#rule-union-find,重做一次合并或路径压缩;记录“错因—不变量—边界—再测题号”,连续两次正确后再回到综合题。
复习路线
先修阶段复习数组下标、队列和递归;主线按“概念与性质 → 二叉树表示与遍历 → 树/森林转换 → Huffman/并查集”推进。每个阶段至少完成一道计算题和一道算法题,再用错题回流清单补齐边界条件。
相关笔记
- 数组和特殊矩阵
- 串的定义与实现
- 串的模式匹配
- 串概述