【前端er每日算法】二叉树三题-235/701/450

42 阅读1分钟

题目一 235. 二叉搜索树的最近公共祖先

思路

二叉搜索树,找到第一个在p和q中间的数字,即最近公共祖先。

var lowestCommonAncestor = function(root, p, q) {
    if (!root) {
        return root;
    }
    if (root.val < p.val && root.val < q.val) {
        const right = lowestCommonAncestor(root.right, p, q);
        if (right) {
            return right;
        }
    }
    if (root.val > p.val && root.val > q.val) {
        const left = lowestCommonAncestor(root.left, p, q);
        if (left) {
            return left;
        }
    }
    return root
}

题目二 701. 二叉搜索树中的插入操作

思路

如何在遇到空节点构造之后赋值给父节点?是通过返回值的方式,左子树去查找的返回值就是root.left,反之亦然。

var insertIntoBST = function(root, val) {
    if (!root) {
        const newNode = new TreeNode(val);
        return newNode;
    }
    if (root.val < val) {
        root.right = insertIntoBST(root.right, val);
    } else {
        root.left = insertIntoBST(root.left, val);
    }
    return root;
};

题目三 450. 删除二叉搜索树中的节点

思路

有点复杂,后面再写