What are the three main cases to consider when deleting a node in a Binary Search Tree (BST)?
1. Node to delete is a leaf (no children). 2. Node to delete has one child. 3. Node to delete has two children.
Click to reveal answer
intermediate
In BST deletion, how do you handle deleting a node with two children?
Replace the node's value with its inorder successor (smallest value in right subtree) or inorder predecessor (largest value in left subtree), then delete that successor/predecessor node.
Click to reveal answer
intermediate
Why do we use the inorder successor or predecessor when deleting a node with two children in a BST?
Because replacing with inorder successor or predecessor maintains the BST property by ensuring all left subtree values remain smaller and right subtree values remain larger.
Click to reveal answer
beginner
What happens if you delete a leaf node in a BST?
The leaf node is simply removed by setting its parent's pointer to null, as it has no children.
Click to reveal answer
beginner
In Go, what is the base case for the recursive BST delete function?
When the current node is nil (empty), return nil to stop recursion.
Click to reveal answer
Which node do you replace a deleted node with when it has two children in a BST?
ARandom node in the tree
BInorder successor or inorder predecessor
CRoot node
DAny leaf node
✗ Incorrect
Replacing with inorder successor or predecessor keeps the BST properties intact.
What is the first step when deleting a node in a BST?
AFind the node to delete
BReplace the node with root
CDelete all children first
DBalance the tree
✗ Incorrect
You must first find the node to delete by traversing the BST.
If a node to delete has only one child, what do you do?
AReplace with inorder successor
BReplace the node with root
CDelete the entire subtree
DReplace the node with its child
✗ Incorrect
You replace the node with its single child to maintain BST structure.
What is the inorder successor of a node in a BST?
ASmallest node in the right subtree
BLargest node in the left subtree
CRoot node
DAny leaf node
✗ Incorrect
Inorder successor is the smallest node in the right subtree.
What does the BST delete function return when the node to delete is not found?
ANil (no change)
BError
CRoot node
DNew node
✗ Incorrect
If node is not found, the function returns the root unchanged.
Explain the steps to delete a node with two children in a BST.
Think about maintaining BST order after deletion.
You got /4 concepts.
Describe how BST deletion handles nodes with zero, one, and two children.
Consider each case separately.
You got /3 concepts.
Practice
(1/5)
1. What happens when you delete a leaf node (a node with no children) from a Binary Search Tree (BST)?
easy
A. The node's children replace it in the tree.
B. The entire tree is rebuilt from scratch.
C. The node is simply removed without affecting other nodes.
D. The root node is always changed.
Solution
Step 1: Understand leaf node deletion
A leaf node has no children, so removing it does not affect other nodes.
Step 2: Effect on BST structure
Since no children exist, simply remove the node and update its parent's pointer to null.
Final Answer:
The node is simply removed without affecting other nodes. -> Option C
Quick Check:
Leaf node deletion = simple removal [OK]
Hint: Leaf nodes delete by direct removal only [OK]
Common Mistakes:
Thinking children need rearrangement
Assuming root always changes
Believing tree rebuild is needed
2. Which of the following Go function signatures correctly represents a BST delete operation for a node with integer keys?
easy
A. func deleteNode(key int, root *Node) *Node
B. func deleteNode(root *Node, key int) *Node
C. func deleteNode(root Node, key int) Node
D. func deleteNode(root *Node, key string) *Node
Solution
Step 1: Check parameter order and types
The root node pointer should be first, key integer second, returning updated root pointer.
Step 2: Validate pointer usage and key type
Root must be a pointer to allow tree modification; key must be int for integer keys.
Final Answer:
func deleteNode(root *Node, key int) *Node -> Option B
Quick Check:
Correct signature = root pointer first, int key [OK]
3. Given the BST below and the Go code to delete node with key 10, what is the in-order traversal output after deletion?
BST structure:
15
/ \
10 20
/ \
8 12
Go code snippet:
root = deleteNode(root, 10)
medium
A. [12, 15, 20]
B. [8, 15, 20]
C. [8, 10, 12, 15, 20]
D. [8, 12, 15, 20]
Solution
Step 1: Identify node to delete and its children
Node 10 has two children: 8 (left) and 12 (right).
Step 2: Replace node 10 with its in-order successor
In-order successor is 12. Replace 10 with 12, then delete original 12 node.
Step 3: Perform in-order traversal after deletion
Traversal order: 8, 12, 15, 20.
Final Answer:
[8, 12, 15, 20] -> Option D
Quick Check:
In-order after deleting 10 = [8, 12, 15, 20] [OK]
Hint: Replace deleted node with in-order successor [OK]
Common Mistakes:
Deleting successor node incorrectly
Skipping replacement step
Confusing in-order predecessor with successor
4. Consider this Go code snippet for deleting a node from a BST. What is the bug?
A. Missing assignment of root.right after deleting successor node.
B. Incorrect base case for empty tree.
C. Wrong comparison operators for key checks.
D. Returning nil instead of root in all cases.
Solution
Step 1: Analyze deletion of node with two children
After replacing root.key with successor's key, the successor node must be deleted from right subtree.
Step 2: Check recursive call effect on tree structure
The call deleteNode(root.right, temp.key) is made but its result is not assigned back to root.right, so the successor node remains.
Final Answer:
Missing assignment of root.right after deleting successor node. -> Option A
Quick Check:
Assign recursive delete result to root.right [OK]
Hint: Always assign recursive delete results to child pointers [OK]
Common Mistakes:
Ignoring returned subtree after deletion
Not updating pointers after recursive calls
Confusing base case with recursive case
5. You have a BST with nodes: 30, 20, 40, 10, 25, 35, 50. You delete node 30 (root). Which node becomes the new root after deletion using the standard BST delete operation?
hard
A. Node 35 (in-order successor)
B. Node 25 (in-order predecessor)
C. Node 40 (right child)
D. Node 20 (left child)
Solution
Step 1: Identify node to delete and its children
Node 30 is root with two children: left subtree (20) and right subtree (40).
Step 2: Find in-order successor of node 30
In-order successor is the smallest node in right subtree, which is 35.
Step 3: Replace root with in-order successor
Replace 30 with 35, then delete original 35 node from right subtree.
Final Answer:
Node 35 (in-order successor) -> Option A
Quick Check:
Root replaced by in-order successor = 35 [OK]
Hint: Root replaced by smallest node in right subtree [OK]
Common Mistakes:
Using in-order predecessor instead of successor
Choosing direct child without successor check
Not deleting successor node after replacement
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.