public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root==null)
return null;
if(root == p|| root == q)
return root;
//如果p、q分别在root的左右两边,也就是一个比root小、一个比root大、则返回root
//p、q不在root两边只能是在root左边或者右边
if((p.val < root.val) && (q.val > root.val) || (q.val < root.val) && (p.val > root.val)){
return root;
}else if( p.val < root.val){
//p q都在左边
TreeNode left = lowestCommonAncestor(root.left, p ,q);
return left;
}else{
//p q都在右边
TreeNode right = lowestCommonAncestor(root.right,p,q);
return right;
}
}