题目描述:
解题思路:
二叉搜索树的中序遍历是从小到大的排序,所以p,q两个结点的公共祖先应当p.val<=an.val<=q.val,接下来就通过循环判断来寻找最大公共祖先即可
代码实现:
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode an = root;//先给an赋值
while (true) {
if (p.val < an.val && q.val < an.val) {
an = an.left;
//如果p,q都小于an,则向左搜索。
} else if (p.val > anval && q.val > an.val) {
an = an.right;
//如果p,q都大于an,则向右搜索。
} else {
break;
}
}
return an;
}