Delete a node from binary search tree in java

If you want to practice data structure and algorithm programs, you can go through 100+ java coding interview questions.

In this post, we will see how to delete a node from binary search tree.

There are two parts to it.
• Search the node
• After searching that node, delete the node.
There are three cases which we may need to consider while deleting a node from binary search tree.
• If node has `no child`
• If node has `one child`
• If node has `two children`.

If node has no child

It is pretty straight forward case. We need to search the node and make it null.

If node has one children

If node have one children then we need to connect parent of removed node directly to child of the removed node.

If node has two children

It is complicated case. If it has two nodes, we need to connect parent of node to the leftmost node(minimum) of right sub tree or rightmost node(maximum) of left subtree.
Lets understand this case with example:

As you can see, we are replacing node 40 with node 50. Node 50 is minimum element in right subtree of 40 and deleting node 50 after moving as there will duplicate nodes.

Why minimum element of right sub tree?

Here we are using binary search tree property that tree can be represented in multiple ways.

For example:

We are using same property while deleting nodes with two children.

Java program to delete node in Binary search tree

When you run above program, you will get following output:

import_contacts

Related Posts

• 18 June

Maximum Number of Vowels in a Substring of Given Length

Table of ContentsApproach – 1 Generate All Substrings Using substring() MethodApproach – 2 Using Sliding Window Method (Linear Time Solution) In this article, we will look at an interesting problem related to the Strings and [Sliding-Window Algorithm](https://java2blog.com/sliding-window-maximum-java/ “Sliding-Window Algorithm”). The problem is : "Given a String we have to Find the Maximum Number of Vowel […]

• 04 June

Search for a range Leetcode – Find first and last position of element in sorted array

Table of ContentsApproach 1 (Using Linear Search)Approach 2 (Using Modified Binary Search-Optimal) In this article, we will look into an interesting problem asked in Coding Interviews related to Searching Algorithms. The problem is: Given a Sorted Array, we need to find the first and last position of an element in Sorted array. This problem is […]

• 30 April

Convert Postfix to Infix in Java

Learn about how to convert Postfix to Infix in java.

• 30 April

Convert Prefix to Postfix in Java

Learn about how to convert Prefix to Postfix in java.

• 16 April

• 29 November

Top 100+ Java coding interview questions

Table of ContentsStringQuestion 1 : How to reverse a String in java? Can you write a program without using any java inbuilt methods?Question 2 : Write a java program to check if two Strings are anagram in java?Question 3 : Write a program to check if String has all unique characters in java?Question 4 : […]

1. Parikksit Bhisay says:

Thank you very much Arpit, very nice, clean and understandable code for newbies!

2. Kasi says:

Thank you very much for nice explanation.

There is a small correction to deletion code.
// Deleting minimum node from right now
deleteNode(root.right, minNodeForRight.data);

The above statement should be assigned to root.right, else the duplicate node won’t be removed.

Thanks,
Kasi

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.