Bird
Raised Fist0
DSA Javaprogramming~20 mins

Binary Tree Node Structure in DSA Java - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Binary Tree Node Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Simple Binary Tree Node Creation
What is the printed output after creating a binary tree node with value 10 and printing its value and children?
DSA Java
class Node {
    int val;
    Node left, right;
    Node(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}

public class Main {
    public static void main(String[] args) {
        Node root = new Node(10);
        System.out.print(root.val + " -> ");
        System.out.print(root.left + " -> ");
        System.out.print(root.right);
    }
}
A10 -> null -> null
B10 -> 0 -> 0
C10 -> ->
D10 -> Node@15db9742 -> Node@6d06d69c
Attempts:
2 left
💡 Hint
Remember that uninitialized object references in Java default to null.
❓ Predict Output
intermediate
2:00remaining
Output After Linking Left Child Node
What is the output after creating a root node with value 5 and linking a left child node with value 3, then printing the values?
DSA Java
class Node {
    int val;
    Node left, right;
    Node(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}

public class Main {
    public static void main(String[] args) {
        Node root = new Node(5);
        root.left = new Node(3);
        System.out.print(root.val + " -> ");
        System.out.print(root.left.val + " -> ");
        System.out.print(root.right);
    }
}
A5 -> Node@15db9742 -> null
B5 -> null -> null
C5 -> 3 -> null
D5 -> 3 -> 0
Attempts:
2 left
💡 Hint
Check what happens when you print a null reference versus an object.
🔧 Debug
advanced
2:00remaining
Identify the Error in Binary Tree Node Initialization
What error will this code produce when trying to compile and run?
DSA Java
class Node {
    int val;
    Node left, right;
    Node(int v) {
        val = v;
        left = right = null;
    }
}

public class Main {
    public static void main(String[] args) {
        Node root = new Node(1);
        System.out.println(root.val);
    }
}
ATypeError: incompatible types
BNullPointerException at runtime
CNo error, prints 1
DSyntaxError: missing semicolon
Attempts:
2 left
💡 Hint
Check the line where left and right are assigned.
🧠 Conceptual
advanced
1:30remaining
Understanding Null Children in Binary Tree Nodes
Why do we initialize left and right child nodes to null in a binary tree node?
ATo save memory by avoiding object creation
BTo indicate the node currently has no children
CTo automatically create child nodes later
DTo prevent the node from being garbage collected
Attempts:
2 left
💡 Hint
Think about what null means for references in Java.
🚀 Application
expert
3:00remaining
Resulting Tree Structure After Multiple Insertions
Given the following code that creates nodes and links them, what is the printed output representing the tree nodes in preorder (root -> left -> right)?
DSA Java
class Node {
    int val;
    Node left, right;
    Node(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}

public class Main {
    public static void preorder(Node node) {
        if (node == null) return;
        System.out.print(node.val + " -> ");
        preorder(node.left);
        preorder(node.right);
    }

    public static void main(String[] args) {
        Node root = new Node(10);
        root.left = new Node(5);
        root.right = new Node(15);
        root.left.left = new Node(3);
        root.left.right = new Node(7);
        preorder(root);
    }
}
A10 -> 5 -> 3 -> 7 -> 15 ->
B10 -> 5 -> 7 -> 3 -> 15 ->
C3 -> 5 -> 7 -> 10 -> 15 ->
D10 -> 15 -> 5 -> 7 -> 3 ->
Attempts:
2 left
💡 Hint
Preorder traversal visits root first, then left subtree, then right subtree.

Practice

(1/5)
1. What is the primary purpose of a TreeNode class in a binary tree?
easy
A. To perform tree traversal operations
B. To store only the root node of the tree
C. To store a value and references to left and right child nodes
D. To balance the binary tree automatically

Solution

  1. Step 1: Understand the role of a node in a binary tree

    A node holds data and links to its children, enabling tree structure.
  2. Step 2: Identify what the TreeNode class stores

    It stores a value and references (pointers) to left and right child nodes.
  3. Final Answer:

    To store a value and references to left and right child nodes -> Option C
  4. Quick Check:

    Node = value + left + right [OK]
Hint: Nodes hold data and links to children [OK]
Common Mistakes:
  • Thinking TreeNode stores the whole tree
  • Confusing node with traversal logic
  • Assuming TreeNode balances the tree
2. Which of the following is the correct Java syntax to define a binary tree node class with integer data?
easy
A. class TreeNode { int data; TreeNode left; TreeNode right; }
B. class TreeNode { int data; TreeNode left; TreeNode right; TreeNode(int val) { data = val; } }
C. class TreeNode { int data; TreeNode left; TreeNode right; void TreeNode() {} }
D. class TreeNode { int data; TreeNode left, right; }

Solution

  1. Step 1: Check class field declarations

    Fields for data, left, and right nodes must be declared properly.
  2. Step 2: Verify constructor syntax

    Constructor should initialize data; class TreeNode { int data; TreeNode left; TreeNode right; TreeNode(int val) { data = val; } } correctly defines constructor.
  3. Final Answer:

    class TreeNode { int data; TreeNode left; TreeNode right; TreeNode(int val) { data = val; } } -> Option B
  4. Quick Check:

    Constructor initializes data correctly [OK]
Hint: Constructor must initialize data field [OK]
Common Mistakes:
  • Missing constructor to set data
  • Incorrect constructor syntax (void TreeNode())
  • Declaring multiple variables incorrectly
3. Given the following code, what will be printed?
class TreeNode {
  int data;
  TreeNode left, right;
  TreeNode(int val) { data = val; }
}

public class Main {
  public static void main(String[] args) {
    TreeNode root = new TreeNode(10);
    root.left = new TreeNode(5);
    root.right = new TreeNode(15);
    System.out.println(root.left.data + "," + root.right.data);
  }
}
medium
A. 5,15
B. 10,5
C. 15,5
D. 10,15

Solution

  1. Step 1: Create root node with data 10

    Root node data is 10, left and right are null initially.
  2. Step 2: Assign left and right children with data 5 and 15

    root.left.data = 5, root.right.data = 15.
  3. Step 3: Print left and right data

    Output is "5,15" from root.left.data and root.right.data.
  4. Final Answer:

    5,15 -> Option A
  5. Quick Check:

    Left=5, Right=15 [OK]
Hint: Print left and right node data directly [OK]
Common Mistakes:
  • Printing root data instead of children
  • Swapping left and right values
  • Confusing node references
4. Identify the error in the following TreeNode class code:
class TreeNode {
  int data;
  TreeNode left, right;
  void TreeNode(int val) {
    data = val;
  }
}
medium
A. Constructor has void return type, so it's a method not a constructor
B. Missing semicolon after data declaration
C. left and right should be arrays, not single nodes
D. Class name and constructor name do not match

Solution

  1. Step 1: Check constructor syntax

    Constructor should not have a return type; 'void' makes it a method.
  2. Step 2: Confirm class and constructor names match

    Names match, so no error there.
  3. Final Answer:

    Constructor has void return type, so it's a method not a constructor -> Option A
  4. Quick Check:

    Constructor no return type [OK]
Hint: Constructor must not have a return type [OK]
Common Mistakes:
  • Adding void before constructor name
  • Confusing methods with constructors
  • Thinking left/right must be arrays
5. You want to create a binary tree node class that also stores a parent node reference. Which of the following class definitions correctly adds this feature?
hard
A. class TreeNode { int data; TreeNode left, right, parent; TreeNode(int val) { data = val; } }
B. class TreeNode { int data; TreeNode left, right; TreeNode parent; TreeNode(int val) { data = val; parent = null; } }
C. class TreeNode { int data; TreeNode left, right; TreeNode parent; TreeNode(int val) { data = val; left = right = parent = null; } }
D. class TreeNode { int data; TreeNode left, right; TreeNode parent; TreeNode(int val, TreeNode p) { data = val; parent = p; } }

Solution

  1. Step 1: Understand the need for parent reference initialization

    Parent reference should be set when node is created to link properly.
  2. Step 2: Check constructor parameters and assignments

    class TreeNode { int data; TreeNode left, right; TreeNode parent; TreeNode(int val, TreeNode p) { data = val; parent = p; } } passes parent node as parameter and assigns it correctly.
  3. Final Answer:

    class TreeNode { int data; TreeNode left, right; TreeNode parent; TreeNode(int val, TreeNode p) { data = val; parent = p; } } -> Option D
  4. Quick Check:

    Parent passed and assigned in constructor [OK]
Hint: Pass parent node in constructor to set reference [OK]
Common Mistakes:
  • Not initializing parent reference
  • Setting parent to null always
  • Declaring parent but never assigning
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