From 571ca29730f356b50d5075f3e430c2bb9bd02389 Mon Sep 17 00:00:00 2001 From: Clesiaaa Date: Fri, 27 Feb 2026 23:44:10 +0100 Subject: [PATCH] feat: add LeetCode problem 450 --- leetcode/src/450.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 leetcode/src/450.c diff --git a/leetcode/src/450.c b/leetcode/src/450.c new file mode 100644 index 0000000000..b770335660 --- /dev/null +++ b/leetcode/src/450.c @@ -0,0 +1,44 @@ +/* + * Deletes a node with the given key from a Binary Search Tree (BST). + * Handles three cases: deleting a leaf node, a node with one child, + * and a node with two children (replaced by its in-order successor). + */ + +struct TreeNode* deleteNode(struct TreeNode* root, int key) +{ + if (root == NULL) + return NULL; + + if (key < root->val) + { + root->left = deleteNode(root->left, key); + } + else if (key > root->val) + { + root->right = deleteNode(root->right, key); + } + else + { + if (root->left == NULL && root->right == NULL) + { + return NULL; + } + else if (root->left == NULL) + { + return root->right; + } + else if (root->right == NULL) + { + return root->left; + } + else + { + struct TreeNode* min_node = root->right; + while (min_node->left != NULL) min_node = min_node->left; + + root->val = min_node->val; + root->right = deleteNode(root->right, min_node->val); + } + } + return root; +}