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

题目链接

const getMin = (root: TreeNode): number => {
    let curNode = root;
    while(curNode.left) {
        curNode = curNode.left
    }
    return curNode.val;
};

function deleteNode(root: TreeNode | null, key: number): TreeNode | null {
    if (!root) return root;
    if (key < root.val) {
        root.left = deleteNode(root.left, key);
    } else if (key > root.val) {
        root.right = deleteNode(root.right, key);
    } else if (root.val === key) {
        if (root.right) {
            const newRoot = new TreeNode(getMin(root.right));
            newRoot.left = root.left;
            newRoot.right = deleteNode(root.right, newRoot.val);
            root = newRoot;
        } else {
            root = root.left;
        }
    }
    return root;
};

results matching ""

    No results matching ""