返回全部文章

树题的关键不是遍历顺序,而是递归语义

很多人一学树题,就先记前序、中序、后序。

很多人一学树题,就先记前序、中序、后序。

这些当然重要,但树题真正决定你会不会做的,通常不是遍历名字,而是递归语义。

什么叫递归语义

简单说,就是你要回答:

这个递归函数到底帮我做了什么。

如果这句话说不清楚,递归很容易变成“写得像对了,但自己也说不明白”。

为什么树题特别依赖递归语义

因为树天然就是递归结构。

很多题真正的关键是:

  • 左子树返回什么
  • 右子树返回什么
  • 当前节点怎么用这些返回值

如果这层关系没有定义清楚,代码就会非常虚。

常见树题其实都在问同一件事

比如:

  • 树高是多少
  • 是否平衡
  • 最近公共祖先
  • 路径和

它们都可以转化成:

  • 子树先返回一个信息
  • 当前节点再基于这个信息做判断

结论

树题真正该练的,不只是遍历顺序,而是:

每一个递归函数,究竟向上返回了什么语义。