本题思路:利用二叉搜索树的性质
我们要搜索的节点,其值必然在 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所确定的区间内
}
}