Bird
Raised Fist0
DSA Pythonprogramming~20 mins

Create a Binary Tree Manually in DSA Python - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Binary Tree Builder Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this manual binary tree creation?
Consider the following Python code that creates a simple binary tree manually. What will be printed when we print the root node's left child's value?
DSA Python
class Node:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

root = Node(10)
root.left = Node(5)
root.right = Node(15)
print(root.left.val)
ANone
B10
C15
D5
Attempts:
2 left
💡 Hint
Look at which node is assigned to root.left and what its value is.
❓ Predict Output
intermediate
2:00remaining
What is the output after adding a right child manually?
Given the code below, what will be printed when we print the value of root.right.right?
DSA Python
class Node:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

root = Node(1)
root.right = Node(2)
root.right.right = Node(3)
print(root.right.right.val)
A2
B3
C1
DNone
Attempts:
2 left
💡 Hint
Trace the assignments from root to right child and then to right-right child.
🔧 Debug
advanced
2:00remaining
Why does this manual binary tree code raise an error?
Look at the code below. It tries to create a binary tree manually but raises an error. What is the cause?
DSA Python
class Node:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

root = Node(7)
root.left.val = 3
print(root.left.val)
Aroot.left is None, so root.left.val causes AttributeError
BNode class is missing a right child initialization
Croot.val is not assigned properly
Dprint statement syntax is incorrect
Attempts:
2 left
💡 Hint
Check if root.left is assigned a Node before accessing its val.
🧠 Conceptual
advanced
2:00remaining
How many nodes are in this manually created binary tree?
Given the following code, how many nodes does the binary tree have?
DSA Python
class Node:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

root = Node(20)
root.left = Node(10)
root.right = Node(30)
root.left.left = Node(5)
root.left.right = Node(15)
root.right.left = Node(25)
A4
B5
C6
D7
Attempts:
2 left
💡 Hint
Count each Node created and assigned.
🚀 Application
expert
3:00remaining
What is the printed output of this manual binary tree traversal?
This code creates a binary tree manually and prints values in preorder (root, left, right). What is the output?
DSA Python
class Node:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

def preorder(node):
    if node is None:
        return
    print(node.val, end=' ')
    preorder(node.left)
    preorder(node.right)

root = Node(8)
root.left = Node(3)
root.right = Node(10)
root.left.left = Node(1)
root.left.right = Node(6)
root.right.right = Node(14)
root.left.right.left = Node(4)
root.left.right.right = Node(7)

preorder(root)
A8 3 1 6 4 7 10 14
B1 3 4 6 7 8 10 14
C8 3 6 1 4 7 10 14
D8 10 14 3 6 4 7 1
Attempts:
2 left
💡 Hint
Preorder means print root first, then left subtree, then right subtree.

Practice

(1/5)
1. What is the correct way to create a root node manually in a binary tree using a simple class with attributes data, left, and right?
easy
A. root = Node(10) # creates root with data 10 and no children
B. root = Node() # creates root with no data
C. root = Node.left(10) # creates left child with data 10
D. root = Node.right(10) # creates right child with data 10

Solution

  1. Step 1: Understand Node class constructor

    The Node class constructor takes data as an argument and initializes left and right children as None.
  2. Step 2: Create root node with data

    Using root = Node(10) creates a root node with data 10 and no children.
  3. Final Answer:

    root = Node(10) # creates root with data 10 and no children -> Option A
  4. Quick Check:

    Create root node with data = root = Node(10) [OK]
Hint: Use Node(data) to create a node with data and empty children [OK]
Common Mistakes:
  • Trying to create children directly without root
  • Calling left or right as methods
  • Creating node without data when constructor requires it
2. Which of the following code snippets correctly assigns a left child node with data 5 to an existing root node named root?
easy
A. root.left = 5
B. root.left(5)
C. root.left.data = 5
D. root.left = Node(5)

Solution

  1. Step 1: Assign a new Node object to root.left

    To add a left child, assign a new Node instance with data 5 to root.left.
  2. Step 2: Check syntax correctness

    root.left = Node(5) correctly creates and assigns the left child node.
  3. Final Answer:

    root.left = Node(5) -> Option D
  4. Quick Check:

    Assign left child node = root.left = Node(5) [OK]
Hint: Assign Node(data) to left or right attribute to add child [OK]
Common Mistakes:
  • Calling left as a function instead of assigning
  • Assigning data directly without creating Node
  • Assigning integer directly to left attribute
3. Given the following code, what is the printed output representing the tree structure?
class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

def print_tree(node):
    if node is None:
        return "null"
    left_str = print_tree(node.left)
    right_str = print_tree(node.right)
    return f"{node.data} -> {left_str} -> {right_str}"

root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
print(print_tree(root))
medium
A. 1 -> 2 -> 4 -> null -> null -> 3 -> null -> null
B. 1 -> 2 -> 4 -> null -> null -> null -> 3 -> null -> null
C. 1 -> 2 -> null -> 4 -> null -> null -> 3 -> null -> null
D. 1 -> 2 -> 4 -> null -> null -> null -> 3 -> null

Solution

  1. Step 1: Trace print_tree calls recursively

    Starting at root (1), print left subtree (2) then right subtree (3). Node 2 has left child 4 and no right child. Node 4 has no children.
  2. Step 2: Build output string step-by-step

    Node 4 returns "4 -> null -> null". Node 2 returns "2 -> 4 -> null -> null -> null". Node 3 returns "3 -> null -> null". Root returns "1 -> 2 -> 4 -> null -> null -> null -> 3 -> null -> null".
  3. Final Answer:

    1 -> 2 -> 4 -> null -> null -> null -> 3 -> null -> null -> Option B
  4. Quick Check:

    Recursive print_tree output = 1 -> 2 -> 4 -> null -> null -> null -> 3 -> null -> null [OK]
Hint: Trace recursion left-right-null to build output string [OK]
Common Mistakes:
  • Missing null for empty children
  • Confusing order of left and right
  • Skipping nodes with no children
4. The following code attempts to create a binary tree but throws an error. What is the error and how to fix it?
class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

root = Node(10)
root.left = Node(5)
root.right = Node(15)
root.left.left = 3  # Error here
medium
A. root.left.left should be root.left.right
B. Missing parentheses when creating Node for left child
C. Assigning integer 3 directly to left child instead of Node object
D. Node class missing __str__ method

Solution

  1. Step 1: Identify the error in assignment

    Assigning 3 directly to root.left.left is wrong because it expects a Node object, not an integer.
  2. Step 2: Fix by creating a Node object for left child

    Replace root.left.left = 3 with root.left.left = Node(3) to create a proper child node.
  3. Final Answer:

    Assigning integer 3 directly to left child instead of Node object -> Option C
  4. Quick Check:

    Child nodes must be Node objects, not raw values [OK]
Hint: Always assign Node(data) to left/right, not raw values [OK]
Common Mistakes:
  • Assigning raw data instead of Node instance
  • Confusing left and right child assignments
  • Ignoring error messages about attribute access
5. You want to manually create this binary tree:
      10
     /  \
    5    15
     \     \
      7     20

Which code snippet correctly creates this tree?
hard
A. root = Node(10) root.left = Node(5) root.right = Node(15) root.left.right = Node(7) root.right.right = Node(20)
B. root = Node(10) root.left = Node(5) root.right = Node(15) root.left.left = Node(7) root.right.left = Node(20)
C. root = Node(10) root.left = Node(7) root.right = Node(5) root.left.right = Node(20) root.right.right = Node(15)
D. root = Node(10) root.left = Node(5) root.right = Node(15) root.left.right = Node(20) root.right.right = Node(7)

Solution

  1. Step 1: Create root and immediate children

    Root is 10, left child 5, right child 15.
  2. Step 2: Add right child 7 to left node and right child 20 to right node

    Node 5 has right child 7, node 15 has right child 20.
  3. Step 3: Verify tree matches diagram

    root = Node(10) root.left = Node(5) root.right = Node(15) root.left.right = Node(7) root.right.right = Node(20) matches the structure exactly with correct child assignments.
  4. Final Answer:

    Code in Option A correctly creates the tree -> Option A
  5. Quick Check:

    Assign children as per diagram: left.right=7, right.right=20 [OK]
Hint: Match tree diagram child positions carefully when assigning nodes [OK]
Common Mistakes:
  • Assigning children to wrong side (left vs right)
  • Swapping node data values
  • Missing intermediate child nodes
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