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;
};