前提知识 binary search tree (BST) 二叉搜索树,left node的值始终大于 root val,right nodes始终小于 root val
解题思路
- 判断两个值是否都大于 root val,那么根据 BST 特点, lowest common ancestor LCA肯定在 left
- 判断两个值是否都小于 root val,那么根据 BST 特点, lowest common ancestor LCA肯定在 right
- 否则直接返回root
代码
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @param {TreeNode} p
* @param {TreeNode} q
* @return {TreeNode}
*/
var lowestCommonAncestor = function (root, p, q) {
while (true) {
if (root.val > p.val && root.val > q.val) {
root = root.left
} else if (root.val < q.val && root.val < p.val) {
root = root.right
} else {
break
}
}
return root
};