235.lowest-common-ancestor-of-a-binary-search-tree.js 533 B

12345678910111213141516171819202122
  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val) {
  4. * this.val = val;
  5. * this.left = this.right = null;
  6. * }
  7. */
  8. /**
  9. * @param {TreeNode} root
  10. * @param {TreeNode} p
  11. * @param {TreeNode} q
  12. * @return {TreeNode}
  13. */
  14. var lowestCommonAncestor = function(root, p, q) {
  15. let curr = root
  16. for (;;) {
  17. if (p.val === curr.val || q.val === curr.val) return curr
  18. if (curr.val < p.val && curr.val < q.val) curr = curr.right
  19. else if (p.val < curr.val && q.val < curr.val) curr = curr.left
  20. else return curr
  21. }
  22. }