题目描述:给定一个二叉搜索树,输入两个节点,求树中两个节点的最低公共祖先
思路:从根节点开始遍历树,如果节点 p 和 q 都在右子树上,那么以右孩子为根节点递归,如果节点 p 和节点 q 都在左子树上,那么以左孩子为根节点递归,否则就意味找到节 p 和节点 q 的最低公共祖先了。
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root == null) {
return null;
}
while(root != null) {
if(p.data < root.data && q.data < root.data) {
root = root.left;
}else if(p.data > root.data && q.data > root.data){
root = root.right;
}else {
return root;
}
}
return root;
}