Skip to content

Latest commit

 

History

History
34 lines (28 loc) · 977 Bytes

235. Lowest Common Ancestor of a Binary Search Tree.md

File metadata and controls

34 lines (28 loc) · 977 Bytes

本题思路:利用二叉搜索树的性质

我们要搜索的节点,其值必然在 q p 两者的值之间。

而且,我们自上往下遍历时可以根据当前节点值选择遍历方向(左还是右)

第一个遇到值符合条件的就是目标节点。

/**
 * 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){
            return null;
        }
        if(root.val>p.val&&root.val>q.val){//root val 大于pqval 中 最大的
            return lowestCommonAncestor(root.left,p,q);
        }else if(root.val<p.val&&root.val<q.val){//root val小于pqval 中 最小的
            return lowestCommonAncestor(root.right,p,q);
        }
        return root;//root val 在 p q所确定的区间内
    }
}