Bird
Raised Fist0
DSA Pythonprogramming~5 mins

BST Delete Operation in DSA Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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
beginner
What is the inorder successor in a BST?
The node with the smallest value in the right subtree of a given node.
Click to reveal answer
intermediate
Why do we replace a node with its 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 nodes are smaller and right subtree nodes are larger than the replaced node.
Click to reveal answer
beginner
What happens if you delete a leaf node in a BST?
You simply remove the leaf node by setting its parent's pointer to null, as it has no children.
Click to reveal answer
Which case requires finding the inorder successor or predecessor during BST deletion?
ANode has one child
BNode has two children
CNode is a leaf
DNode is the root
What is the inorder successor of a node in a BST?
ASmallest node in right subtree
BLargest node in left subtree
CParent node
DAny leaf node
How do you delete a leaf node in a BST?
AReplace it with inorder successor
BReplace it with inorder predecessor
CRemove it by setting parent's pointer to null
DSwap with root node
If a node has only one child, how is deletion handled in a BST?
AReplace node with inorder successor
BDelete node and all its children
CReplace node with inorder predecessor
DReplace node with its child
Why is it important to maintain BST properties after deletion?
ATo ensure efficient search, insert, and delete operations
BTo keep the tree balanced
CTo make the tree look symmetrical
DTo reduce memory usage
Explain the steps to delete a node with two children in a BST.
Think about how to keep the tree ordered after deletion.
You got /4 concepts.
    Describe how deleting a node with one child differs from deleting a leaf node in a BST.
    Consider what happens to the child nodes.
    You got /4 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 are moved up to replace it.
      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

      1. Step 1: Understand leaf node deletion

        A leaf node has no children, so removing it does not affect other nodes.
      2. Step 2: Effect on BST structure

        Since no children exist, simply remove the node and update its parent's pointer to null.
      3. Final Answer:

        The node is simply removed without affecting other nodes. -> Option C
      4. 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 is the correct Python function signature to delete a node with a given key from a BST?
      easy
      A. def deleteNode(key):
      B. def deleteNode(root, key):
      C. def deleteNode(root):
      D. def deleteNode(key, root):

      Solution

      1. Step 1: Identify required parameters

        To delete a node, we need the BST root and the key to delete.
      2. Step 2: Check function signature

        Only def deleteNode(root, key): has both parameters in correct order.
      3. Final Answer:

        def deleteNode(root, key): -> Option B
      4. Quick Check:

        Function needs root and key [OK]
      Hint: Delete needs root and key parameters [OK]
      Common Mistakes:
      • Swapping parameter order
      • Missing one parameter
      • Using only key or root alone
      3. Given the BST below, what is the inorder traversal after deleting node 10?
             15
            /  \
          10    20
         /  \     \
        8   12    25
      
      medium
      A. [8, 12, 15, 20]
      B. [8, 10, 12, 15, 20, 25]
      C. [8, 15, 20, 25]
      D. [8, 12, 15, 20, 25]

      Solution

      1. Step 1: Delete node 10 with two children

        Node 10 has two children (8 and 12). Replace it with its inorder successor (12).
      2. Step 2: Adjust tree and perform inorder traversal

        After replacement, node 12 replaces 10, and 12's original position is removed. Inorder traversal is [8, 12, 15, 20, 25].
      3. Final Answer:

        [8, 12, 15, 20, 25] -> Option D
      4. Quick Check:

        Inorder after delete = [8, 12, 15, 20, 25] [OK]
      Hint: Replace deleted node with inorder successor [OK]
      Common Mistakes:
      • Not replacing node with successor
      • Leaving deleted node in traversal
      • Incorrect traversal order
      4. The following code attempts to delete a node from a BST but causes an error. What is the main issue?
      def deleteNode(root, key):
          if not root:
              return root
          if key < root.val:
              deleteNode(root.left, key)
          elif key > root.val:
              deleteNode(root.right, key)
          else:
              if not root.left:
                  return root.right
              elif not root.right:
                  return root.left
              temp = findMin(root.right)
              root.val = temp.val
              deleteNode(root.right, temp.val)
          return root
      
      medium
      A. Recursive calls do not update root's children pointers.
      B. The base case is missing.
      C. The function does not handle leaf nodes.
      D. The function uses an undefined findMin function.

      Solution

      1. Step 1: Check recursive calls for updating children

        Recursive calls like deleteNode(root.left, key) do not assign the result back to root.left, so changes are lost.
      2. Step 2: Correct by assigning returned subtree

        We must write root.left = deleteNode(root.left, key) and root.right = deleteNode(root.right, key) to update pointers properly.
      3. Final Answer:

        Recursive calls do not update root's children pointers. -> Option A
      4. Quick Check:

        Update children with recursive call results [OK]
      Hint: Assign recursive call results to children [OK]
      Common Mistakes:
      • Ignoring returned subtree after recursion
      • Assuming in-place changes without assignment
      • Missing base case (not the main issue here)
      5. You want to delete a node with two children in a BST. Which approach correctly maintains BST properties after deletion?
      hard
      A. Replace the node with its inorder predecessor or successor, then delete that node.
      B. Replace the node with its left child only.
      C. Replace the node with its right child only.
      D. Remove the node and leave a gap in the tree.

      Solution

      1. Step 1: Understand deletion of node with two children

        Direct removal breaks BST rules; we must replace the node with a suitable value.
      2. Step 2: Use inorder predecessor or successor

        Replacing with inorder predecessor (max in left subtree) or successor (min in right subtree) keeps BST order intact.
      3. Step 3: Delete the replaced node recursively

        After replacement, delete the predecessor/successor node which will have at most one child.
      4. Final Answer:

        Replace the node with its inorder predecessor or successor, then delete that node. -> Option A
      5. Quick Check:

        Use inorder predecessor/successor for two-child deletion [OK]
      Hint: Use inorder predecessor or successor for two-child node [OK]
      Common Mistakes:
      • Replacing with only left or right child
      • Removing node without replacement
      • Breaking BST ordering rules
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard