Friday, April 29, 2022

Leet Code 450. Delete Node in a BST

Example 1:

Input: root = [5,3,6,2,4,null,7], key = 3
Output: [5,4,6,2,null,null,7]
Explanation: Given key to delete is 3. So we find the node with value 3 and delete it.
One valid answer is [5,4,6,2,null,null,7], shown in the above BST.







package pep.Day70;

public class LeetCode_450_Delete_Node_in_BST {
static class TreeNode {
int val;
TreeNode left, right;

TreeNode() {

}

TreeNode(int val) {
this.val = val;
}

TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}

public static TreeNode deleteNode(TreeNode root, int key) {
if (root == null)
return null;

if (root.val < key) {
// right me jaenge hum
root.right = deleteNode(root.right, key);
} else if (root.val > key) {
// left me jaenge hum
root.left = deleteNode(root.left, key);
} else {
// agr leaf node ko delete krna hoga
// jab root.left ne null return kiya to jha se yeh
// call hua hoga ie. iska parent me null add ho jaega aur
// yeh key wala node delete ho jaega
if (root.left == null && root.right == null)
return null;
// agr woh node delete krni hai jiska sirf ek child hai
else if (root.left == null || root.right == null)
return root.left == null ? root.right : root.left;
else {
// right wala element uthaya
TreeNode temp = root.right;
// right wala element ke left most child pr jaenge
while (temp.left != null)
temp = temp.left;

// jis root node ko delete krna hai usme leftmost wale ki value daal de
root.val = temp.val;

// aab leftmost wale ko delete krne ke lea
// root node ki right side pr deleteNode call kr denge
root.right = deleteNode(root.right, root.val);
}
}

return root;
}
}



 

No comments:

Post a Comment

Diagonal Traversal

 eg.  1       2       3       4 5      6       7       8 9    10    11     12 13  14   15    16 Output: 1 6 11 16 2 7 12 3 8 4  Approach:...