Leetcode——二叉树的最近公共祖先
Posted Yawn,
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——二叉树的最近公共祖先相关的知识,希望对你有一定的参考价值。
1. 题目
2. 题解
若 root 是 p, q 的 最近公共祖先 ,则只可能为以下情况之一:
- p 和 q 在 root的子树中,且分列 root 的 异侧(即分别在左、右子树中);
- p = root,且 qq 在 root的左或右子树中;
- q = root ,且 pp 在 root 的左或右子树中;
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root == null || root == p || root == q)
return root;
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
if(left == null)
return right;
if(right == null)
return left;
return root;
}
}
以上是关于Leetcode——二叉树的最近公共祖先的主要内容,如果未能解决你的问题,请参考以下文章