HOT100二叉树篇Leetcode236.-二叉树的最近公共祖先
目录
HOT100——二叉树篇Leetcode236. 二叉树的最近公共祖先
题目:Leetcode236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
原题链接
思路
- 最近公共祖先
两个节点都位于最近公共祖先的左右子树或者一个节点自己本身就是公共祖先
- 首先本题一定是自下而上的找,理所当然的我们使用后续遍历
- 如果 left 和 right 都不为空,说明 p 和 q 分别位于当前节点的左右子树中,因此当前节点 root 就是它们的最低公共祖先
- 如果只有 left 不为空,说明 p 和 q 都在左子树中,返回 left
- 如果只有 right 不为空,说明 p 和 q 都在右子树中,返回 right