LeetCode第236题Lowest Common Ancestor of a Binary Tree
Lowest Common Ancestor of a Binary Tree
Lowest Common Ancestor of a Binary Tree给定一个二叉树,找到树中两个给定结点的最近公共祖先结点LCA。
Example
Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
Output: 3
Explanation: The LCA of nodes 5 and 1 is 3.
如何寻找最近公共祖先呢,我们可以通过遍历目标结点q
和p
的路径,得到其中重合的最近的部分,这很直接,比较好理解。这里我们使用递归的方式来遍历,从根节点开始分别遍历左右子树,如果目标结点仅存在于左子树内,那么最近公共节点必然位于左子树内,如果目标结点同时存在于左右子树内,那么最近公共节点必然是根节点。
Solution
下面是Java
的代码:
/** |
下面是Python
的代码:
# Definition for a binary tree node. |
总结
第236题是中等题,利用二叉树的性质,通过递归可以写出美感较强的代码,易于阅读。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WenQian Dong's Web!