观察题目是否反复出现“树”对应的数据访问、状态压缩或边界推进特征。
二叉树:模式识别与解题模板
本专题包含 14 道题。先辨认输入结构和目标,再选择能够持续保持关键不变量的算法,而不是只记住某一道题的代码。
高频模式
观察题目是否反复出现“二叉树”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“深度优先搜索”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“广度优先搜索”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“数组”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“哈希表”对应的数据访问、状态压缩或边界推进特征。
核心模板
- 先写清输入规模、目标值和允许修改的数据。
- 定义每一步开始和结束时必须成立的不变量。
- 把循环、递归、队列或状态转移拆成可验证事件。
- 用最小输入、重复值和退化结构验证边界。
常见错误
- 只根据样例选择算法,没有核对复杂度上限。
- 更新多个指针或状态时破坏旧值依赖。
- 忽略空输入、重复值、断开结构或极端顺序。
- 代码结果正确,但解释没有说明为什么不会漏解或重复。
代表题
二叉树的最大深度
计算二叉树最大深度。
相同的树
判断两棵二叉树结构和值是否完全相同。
翻转二叉树
交换每个节点的左右子树。
对称二叉树
判断二叉树是否关于中心轴镜像对称。
从前序与中序遍历序列构造二叉树
由前序和中序遍历重建二叉树。
从中序与后序遍历序列构造二叉树
由中序和后序遍历重建二叉树。
填充每个节点的下一个右侧节点指针 II
让每个节点 next 指向同层右侧相邻节点。
二叉树展开为链表
按前序遍历顺序原地展开为右指针链表。