Posts Delete a Node in Binary Search Tree
Post
Cancel

Delete a Node in Binary Search Tree

PROBLEM DESCRIPTION

Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference (possibly updated) of the BST.

leetcode

SOLUTION

snapshot

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
40
41
42
43
44
45
46
47
48
49
50
class Solution {
    
    public TreeNode deleteNode(TreeNode root, int key) {
        
        if(root == null) return null;
        
        if(root.val == key){
            
            //No child
            if(root.left == null && root.right == null){
                return null;
            }
            
            //Only left child
            if(root.left == null && root.right != null){
                return root.right;
            }
            
            //Only right child
            if(root.left != null && root.right == null){
                return root.left;                
            }
            
            //Two children
            int max = getMaxValueInBST(root.left);
            root.val = max;
            root.left = deleteNode(root.left, max);
            
        }
        
        if(key < root.val){
            root.left = deleteNode(root.left, key);
        }
        
        if(key > root.val){
            root.right = deleteNode(root.right, key);
        }
        
        return root;
        
    }
    
    public int getMaxValueInBST(TreeNode root){
        while(root.right != null){
            root = root.right;
        }
        return root.val;
    }
    
}
This post is licensed under CC BY 4.0 by the author.