树题的关键不是遍历顺序,而是递归语义
很多人一学树题,就先记前序、中序、后序。
很多人一学树题,就先记前序、中序、后序。
这些当然重要,但树题真正决定你会不会做的,通常不是遍历名字,而是递归语义。
什么叫递归语义
简单说,就是你要回答:
这个递归函数到底帮我做了什么。
如果这句话说不清楚,递归很容易变成“写得像对了,但自己也说不明白”。
为什么树题特别依赖递归语义
因为树天然就是递归结构。
很多题真正的关键是:
- 左子树返回什么
- 右子树返回什么
- 当前节点怎么用这些返回值
如果这层关系没有定义清楚,代码就会非常虚。
常见树题其实都在问同一件事
比如:
- 树高是多少
- 是否平衡
- 最近公共祖先
- 路径和
它们都可以转化成:
- 子树先返回一个信息
- 当前节点再基于这个信息做判断
结论
树题真正该练的,不只是遍历顺序,而是:
每一个递归函数,究竟向上返回了什么语义。