【题目】:236. 二叉树的最近公共祖先
终止条件:
- 当root到叶节点终止
- 当root是p或q终止(因为要求的是公共祖先,如果遍历到p,就算q还在p的下边,他们的公共祖先还是p)
这也说明了:如果返回的是nullptr,说明p、q不在这棵树中
返回情况:
- left == nullptr && right == nullptr:说明root的左右子树都没有p、q,直接返回nullptr
- left != nullptr && right == nullptr:说明p、q在root的左子树中,那么只需要返回left(因为前面只要遇到p或q就会终止,所以此时left就是p、q中相对上边的节点)
- right != nullptr && left == nullptr:说明p、q在root的右子树中,那么只要返回right即可(原因同上)
- right != nullptr && left != nullptr:说明p、q分散在root的左右子树中,此时root就是他们的最近公共祖先节点
class Solution { |
- 时间复杂度: O(n)
- 空间复杂度: O(n)