从上到下遍历的时候,cur节点是数值在[p, q]区间中则说明该节点cur就是最近公共祖先了
递归法:
var lowestCommonAncestor = function(root, p, q) {// 使用递归的方法// 1. 使用给定的递归函数lowestCommonAncestor// 2. 确定递归终止条件if(root === null) {return root;}if(root.val>p.val&&root.val>q.val) {// 向左子树查询let left = lowestCommonAncestor(root.left,p,q);return left !== null&&left;}if(root.val<p.val&&root.val<q.val) {// 向右子树查询let right = lowestCommonAncestor(root.right,p,q);return right !== null&&right;}return root;};
迭代法:
var lowestCommonAncestor = function(root, p, q) {
// 使用迭代的方法
while(root) {
if(root.val>p.val&&root.val>q.val) {
root = root.left;
}else if(root.val<p.val&&root.val<q.val) {
root = root.right;
}else {
return root;
}
}
return null;
};
