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——二叉树的最近公共祖先的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 236 二叉树的最近公共祖先

LeetCode二叉树的最近公共祖先

Leetcode 236.二叉树的最近公共祖先

leetcode-236二叉树的最近公共祖先

LeetCode 0236. 二叉树的最近公共祖先

leetcode 236. 二叉树的最近公共祖先