-
Notifications
You must be signed in to change notification settings - Fork 61
/
Delete Node in a BST
39 lines (32 loc) · 930 Bytes
/
Delete Node in a BST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//Link - https://leetcode.com/problems/delete-node-in-a-bst/
TreeNode* minNodeValue(TreeNode* root){
TreeNode* curr = root;
while(curr && curr->left != NULL){
curr = curr->left;
}
return curr;
}
TreeNode* deleteNode(TreeNode* root, int key) {
if(root == NULL) return root;
if(root->val < key){
root->right = deleteNode(root->right, key);
}
else if(root->val > key) {
root->left = deleteNode(root->left, key);
}
else{
if(root->left == NULL){
TreeNode* temp = root->right;
return temp;
}
else if(root->right == NULL){
TreeNode* temp = root->left;
return temp;
}
TreeNode* temp = minNodeValue(root->right);
root->val = temp->val;
root->right = deleteNode(root->right, temp->val);
}
return root;
}
};