11. Lowest Common Ancestor of a Binary Search Tree 二叉树的最近公共祖先

65 阅读1分钟

leetcode.cn/problems/lo…

前提知识 binary search tree (BST) 二叉搜索树,left node的值始终大于 root val,right nodes始终小于 root val

解题思路

  1. 判断两个值是否都大于 root val,那么根据 BST 特点, lowest common ancestor LCA肯定在 left
  2. 判断两个值是否都小于 root val,那么根据 BST 特点, lowest common ancestor LCA肯定在 right
  3. 否则直接返回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
};