LeetCode 235. 二叉搜索树的最近公共祖先 java题解

https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/description/

由于二叉搜索树是有序的,所以比题236更简单。

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root==p) return p;
        if(root==q) return q;
        //p,q都不是root。看p,q在同一侧孩子吗?
        //看p,q分别在哪一侧
        if(p.val<root.val&&q.val<root.val){//都在左子树
            return lowestCommonAncestor(root.left,p,q);
        }
        else if(p.val>root.val&&q.val>root.val){//都在右子树
            return lowestCommonAncestor(root.right,p,q);
        }
        else{//分别在左右
            return root;
        }
    }
}
/**
两个节点ab的最近公共祖先 1.他们两的父节点c 2.他们两其中之一a,a是b的父节点
 */

你可能感兴趣的:(LeetCode,leetcode,java,算法)