Bird
Raised Fist0
Data Structures Theoryknowledge~10 mins

Insertion in BST in Data Structures Theory - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to insert a new node in a Binary Search Tree (BST).

Data Structures Theory
if root is None:
    root = [1](key)
Drag options to blanks, or click blank then click option'
ANode
BTree
CBSTNode
DNodeKey
Attempts:
3 left
💡 Hint
Common Mistakes
Using a class name that does not exist like 'Tree' or 'BSTNode'.
Trying to insert the key directly without creating a node.
2fill in blank
medium

Complete the code to decide where to insert the new key in the BST.

Data Structures Theory
if key < root.key:
    root.left = insert(root.left, [1])
Drag options to blanks, or click blank then click option'
Aroot.left
Bnew_key
Croot.key
Dkey
Attempts:
3 left
💡 Hint
Common Mistakes
Passing root.key instead of key to the recursive call.
Passing root.left which is a node, not the key.
3fill in blank
hard

Fix the error in the code to insert the key in the right subtree.

Data Structures Theory
elif key > root.key:
    root.right = insert(root.right, [1])
Drag options to blanks, or click blank then click option'
Aroot.key
Bkey
Croot.right
Dnew_key
Attempts:
3 left
💡 Hint
Common Mistakes
Passing root.key instead of key.
Passing root.right which is a node, not the key.
4fill in blank
hard

Fill both blanks to complete the insertion function that returns the updated root.

Data Structures Theory
def insert(root, key):
    if root is None:
        return [1](key)
    if key < root.key:
        root.left = insert(root.left, key)
    elif key > root.key:
        root.right = insert(root.right, key)
    else:
        return root
    return [2]
Drag options to blanks, or click blank then click option'
ANode
Broot
Ckey
Dinsert
Attempts:
3 left
💡 Hint
Common Mistakes
Returning the key instead of the root.
Not returning anything after insertion.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps node keys to their depths if depth is greater than 1.

Data Structures Theory
depths = {node.key: depth for node, depth in nodes if depth [1] 1 and node.key [2] [3]
Drag options to blanks, or click blank then click option'
A>
B!=
CNone
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using == instead of != for the key check.
Using <= or < instead of > for depth.

Practice

(1/5)
1. What happens when you insert a new value smaller than the current node in a Binary Search Tree (BST)?
easy
A. The new value replaces the current node.
B. The new value is inserted in the right subtree of the current node.
C. The new value is inserted in the left subtree of the current node.
D. The new value is ignored.

Solution

  1. Step 1: Understand BST insertion rule for smaller values

    In a BST, if the new value is smaller than the current node, it must go to the left subtree.
  2. Step 2: Apply the rule to the insertion process

    The new value is inserted into the left subtree, maintaining BST order.
  3. Final Answer:

    The new value is inserted in the left subtree of the current node. -> Option C
  4. Quick Check:

    Smaller value goes left [OK]
Hint: Smaller values always go to the left subtree [OK]
Common Mistakes:
  • Inserting smaller values to the right subtree
  • Replacing the current node instead of inserting
  • Ignoring the new value
2. Which of the following is the correct way to insert a value into an empty Binary Search Tree (BST)?
easy
A. Set the new value as the root node of the BST.
B. Insert the new value as the left child of a random node.
C. Ignore the new value since the tree is empty.
D. Insert the new value as the right child of a random node.

Solution

  1. Step 1: Identify insertion behavior for an empty BST

    When the BST is empty, the first inserted value becomes the root node.
  2. Step 2: Confirm the correct insertion method

    Setting the new value as the root node initializes the BST correctly.
  3. Final Answer:

    Set the new value as the root node of the BST. -> Option A
  4. Quick Check:

    Empty tree insertion sets root [OK]
Hint: First insertion always becomes the root node [OK]
Common Mistakes:
  • Trying to insert as child without a root
  • Ignoring insertion in empty tree
  • Inserting randomly without root
3. Consider the BST below:
    10
   /  
  5   15
What will the BST look like after inserting the value 12?
medium
A.
    10
   /  
  5   15
      /
    12
B.
    10
   /  
  5   12
        
       15
C.
    10
   /  
  5   15
         
        12
D.
    10
   /  
  5   12
      /
    15

Solution

  1. Step 1: Compare 12 with root and right child

    12 is greater than 10, so move to right subtree. 12 is less than 15, so it goes to the left of 15.
  2. Step 2: Insert 12 as left child of 15

    Place 12 as the left child of node 15 to maintain BST order.
  3. Final Answer:

    12 is inserted as left child of 15. -> Option A
  4. Quick Check:

    12 > 10 and 12 < 15, so left of 15 [OK]
Hint: Compare stepwise: left if smaller, right if larger [OK]
Common Mistakes:
  • Inserting 12 as right child of 15
  • Inserting 12 as right child of 10
  • Ignoring BST order rules
4. Identify the error in the following BST insertion pseudocode:
function insert(node, value):
  if node is null:
    return new Node(value)
  if value > node.value:
    node.left = insert(node.left, value)
  else:
    node.right = insert(node.right, value)
  return node
medium
A. The code inserts smaller values to the left subtree instead of right.
B. The code does not handle the base case for empty tree.
C. The code incorrectly returns null instead of the node.
D. The code inserts larger values to the left subtree instead of right.

Solution

  1. Step 1: Analyze insertion direction for larger values

    The code inserts values greater than current node into the left subtree, which is incorrect.
  2. Step 2: Correct insertion direction for BST

    Larger values should be inserted into the right subtree to maintain BST order.
  3. Final Answer:

    The code inserts larger values to the left subtree instead of right. -> Option D
  4. Quick Check:

    Larger values go right, not left [OK]
Hint: Larger values always go right subtree [OK]
Common Mistakes:
  • Swapping left and right insertion conditions
  • Missing base case for null node
  • Returning wrong node after insertion
5. You have a BST with values 20, 10, 30, 25, and 40 inserted in that order. Now you want to insert 30 again. Where should the new 30 be inserted according to standard BST insertion rules?
hard
A. As the left child of the existing 30 node.
B. As the right child of the existing 30 node.
C. Replace the existing 30 node with the new 30.
D. Do not insert duplicates in BST.

Solution

  1. Step 1: Understand BST insertion for equal values

    Standard BST insertion places values equal to the current node in the right subtree.
  2. Step 2: Insert new 30 as right child of existing 30

    The new 30 should be inserted as the right child of the existing 30 node.
  3. Final Answer:

    As the right child of the existing 30 node. -> Option B
  4. Quick Check:

    Equal values go right subtree [OK]
Hint: Equal values go to right subtree in BST [OK]
Common Mistakes:
  • Inserting duplicates to the left subtree
  • Replacing existing nodes instead of inserting
  • Ignoring duplicates insertion rules