树与二叉树

二叉树

本章是一条从概念到算法的学习路径。先修数组、串和递归;每学完一段,用题目验证不变量,再把错题回流到对应锚点。

学习顺序

  1. 概念与性质:先读树的基本概念与存储,建立结点、度、深度、高度和父子关系。
  2. 二叉树表示与遍历:再读顺序/链式表示与下标边界遍历重建;能手算先序、中序、后序、层序并判断唯一性。
  3. 树/森林转换:沿树与森林转换遍历关系复习孩子兄弟表示,核对转换前后的访问顺序。
  4. Huffman/并查集:最后进入Huffman 树与编码并查集,把贪心合并、WPL、路径压缩与按规模合并串成算法题流程。

学完能做什么

能力对应知识点题型范围
根据度数、层数和边数核对树的性质ds.05.01结点/边/叶子数量、度与高度判断
选择顺序或链式存储并处理越界ds.05.020/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/并查集”推进。每个阶段至少完成一道计算题和一道算法题,再用错题回流清单补齐边界条件。

相关笔记

  • 数组和特殊矩阵
  • 串的定义与实现
  • 串的模式匹配
  • 串概述