Bird
Raised Fist0
DSA Typescriptprogramming~20 mins

Binary Tree Node Structure in DSA Typescript - 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 Binary Tree Node Creation
What will be the printed output of the binary tree node after running the code below?
DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val: number) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

const root = new TreeNode(10);
root.left = new TreeNode(5);
root.right = new TreeNode(15);
console.log(root.val + ' -> ' + root.left?.val + ' -> ' + root.right?.val + ' -> null');
A10 -> 5 -> 15 -> null
B10 -> null -> null -> null
C15 -> 5 -> 10 -> null
D5 -> 10 -> 15 -> null
Attempts:
2 left
💡 Hint
Think about how the root node and its children are assigned values.
❓ Predict Output
intermediate
2:00remaining
Value of Left Child After Node Modification
After running the code below, what is the value of root.left.val?
DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val: number) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

const root = new TreeNode(20);
root.left = new TreeNode(10);
root.left.val = 15;
A15
B10
C20
Dnull
Attempts:
2 left
💡 Hint
Look at the line where root.left.val is changed.
❓ Predict Output
advanced
3:00remaining
Output of Inorder Traversal of Binary Tree
What is the output of the inorder traversal of the binary tree created by the code below?
DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val: number) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

function inorder(root: TreeNode | null, result: number[] = []): number[] {
  if (root === null) return result;
  inorder(root.left, result);
  result.push(root.val);
  inorder(root.right, result);
  return result;
}

const root = new TreeNode(8);
root.left = new TreeNode(3);
root.right = new TreeNode(10);
root.left.left = new TreeNode(1);
root.left.right = new TreeNode(6);
root.right.right = new TreeNode(14);
const output = inorder(root);
console.log(output.join(' -> ') + ' -> null');
A8 -> 3 -> 1 -> 6 -> 10 -> 14 -> null
B1 -> 3 -> 6 -> 8 -> 10 -> 14 -> null
C1 -> 6 -> 3 -> 8 -> 14 -> 10 -> null
D3 -> 1 -> 6 -> 8 -> 14 -> 10 -> null
Attempts:
2 left
💡 Hint
Inorder traversal visits left child, then node, then right child.
🔧 Debug
advanced
2:00remaining
Identify the Error in Binary Tree Node Assignment
What error will the following code produce when run?
DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val: number) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

const root = new TreeNode(5);
root.left.val = 3;
ANo error, runs successfully
BSyntaxError: Unexpected token '.'
CReferenceError: root.left is not defined
DTypeError: Cannot read property 'val' of null
Attempts:
2 left
💡 Hint
Check if root.left is assigned before accessing its val property.
🧠 Conceptual
expert
3:00remaining
Number of Nodes in a Complete Binary Tree of Height h
What is the total number of nodes in a complete binary tree of height h (where height is the number of edges from root to deepest leaf)?
Ah + 1
B2^h - 1
C2^(h+1) - 1
Dh * 2
Attempts:
2 left
💡 Hint
Think about how nodes double at each level in a complete binary tree.

Practice

(1/5)
1. What does a typical binary tree node contain in its structure?
easy
A. Only a value and a pointer to the next node
B. A value, a left child node, and a right child node
C. A value and multiple child nodes in a list
D. Only a value without any child nodes

Solution

  1. Step 1: Understand binary tree node components

    A binary tree node typically stores a value and references to two children: left and right.
  2. Step 2: Compare options with definition

    A value, a left child node, and a right child node correctly lists value, left child, and right child. Others describe linked list or general tree nodes.
  3. Final Answer:

    A value, a left child node, and a right child node -> Option B
  4. Quick Check:

    Binary tree node = value + left + right [OK]
Hint: Binary tree nodes always have two child pointers [OK]
Common Mistakes:
  • Confusing binary tree node with linked list node
  • Thinking nodes have multiple children like general trees
  • Ignoring child pointers in node structure
2. Which of the following is the correct TypeScript syntax to define a binary tree node class?
easy
A. class Node { value: number; left: Node | undefined; right: Node | undefined; constructor(value: number) { this.value = value; this.left = null; this.right = null; } }
B. class Node { value: number; left: Node; right: Node; constructor(value: number) { this.value = value; } }
C. class Node { value: number; left: Node | null; right: Node | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } }
D. class Node { value: number; left: Node | null; right: Node | null; constructor() { this.value = 0; this.left = null; this.right = null; } }

Solution

  1. Step 1: Check property types and initialization

    class Node { value: number; left: Node | null; right: Node | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } correctly declares left and right as Node or null and initializes them to null in constructor.
  2. Step 2: Verify constructor parameters and assignments

    class Node { value: number; left: Node | null; right: Node | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } constructor takes value and sets left and right to null, matching typical binary tree node setup.
  3. Final Answer:

    Correct TypeScript class with nullable children and proper constructor -> Option C
  4. Quick Check:

    Nullable children + constructor with value = class Node { value: number; left: Node | null; right: Node | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } [OK]
Hint: Child nodes must allow null to represent empty branches [OK]
Common Mistakes:
  • Not initializing left and right to null
  • Using undefined instead of null for children
  • Missing constructor parameter for value
3. Given the following TypeScript code, what will be the output of console.log(root.left?.value)?
class Node {
  value: number;
  left: Node | null;
  right: Node | null;
  constructor(value: number) {
    this.value = value;
    this.left = null;
    this.right = null;
  }
}
const root = new Node(10);
root.left = new Node(5);
root.right = new Node(15);
console.log(root.left?.value);
medium
A. 5
B. undefined
C. null
D. 10

Solution

  1. Step 1: Analyze node assignments

    root.left is assigned a new Node with value 5, so root.left is not null.
  2. Step 2: Understand optional chaining and output

    Using root.left?.value safely accesses value of left node, which is 5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    root.left.value = 5 [OK]
Hint: Optional chaining returns value if node exists, else undefined [OK]
Common Mistakes:
  • Confusing null and undefined outputs
  • Assuming root.left is null by default
  • Misreading optional chaining operator
4. Identify the error in this TypeScript binary tree node class and fix it:
class Node {
  value: number;
  left: Node;
  right: Node;
  constructor(value: number) {
    this.value = value;
    this.left = null;
    this.right = null;
  }
}
medium
A. left and right should allow null type (Node | null)
B. Constructor should not assign null to left and right
C. value should be optional in constructor
D. Class should not have a constructor

Solution

  1. Step 1: Check property types vs assigned values

    left and right are typed as Node but assigned null, causing type error.
  2. Step 2: Fix type declarations

    Change left and right types to Node | null to allow null assignment.
  3. Final Answer:

    left and right should allow null type (Node | null) -> Option A
  4. Quick Check:

    Nullable children fix type error [OK]
Hint: Child nodes must be nullable if assigned null [OK]
Common Mistakes:
  • Not updating types when assigning null
  • Removing constructor unnecessarily
  • Making value optional without reason
5. How would you modify the binary tree node class to include a parent pointer, and what is the impact on tree traversal?
hard
A. No changes needed; parent pointer is implicit in left and right
B. Add a parent property of type number; no impact on traversal
C. Add a parent property as an array of nodes; allows multiple parents
D. Add a parent property of type Node | null; allows upward traversal from child to parent

Solution

  1. Step 1: Understand parent pointer addition

    Adding a parent property of type Node | null stores reference to parent node.
  2. Step 2: Impact on traversal

    This allows traversing upwards from child to parent, enabling bidirectional navigation.
  3. Final Answer:

    Add a parent property of type Node | null; allows upward traversal from child to parent -> Option D
  4. Quick Check:

    Parent pointer enables upward traversal [OK]
Hint: Parent pointer lets you move up the tree easily [OK]
Common Mistakes:
  • Using wrong type for parent pointer
  • Assuming parent pointer exists by default
  • Confusing parent pointer with multiple parents
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