/**
* 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) {
TreeNode t;
t=root;
while(t!=null){
if(p.val<t.val&&q.val>t.val) return t;
if(q.val<t.val&&p.val>t.val) return t;
if(p==t||q==t) return t;
if(p.val<t.val&&q.val<t.val){
t=t.left;
}else if(p.val>t.val&&q.val>t.val)
t=t.right;
}
return t;
}
}