Bird
Raised Fist0
DSA C#programming~20 mins

Height of Binary Tree in DSA C# - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Binary Tree Height Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the height of this binary tree?
Consider the following binary tree structure and code to calculate its height. What is the output printed by the program?
DSA C#
class Node {
    public int Value;
    public Node Left, Right;
    public Node(int val) { Value = val; Left = Right = null; }
}

class BinaryTree {
    public Node Root;

    public int Height(Node node) {
        if (node == null) return 0;
        int leftHeight = Height(node.Left);
        int rightHeight = Height(node.Right);
        return 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);
    }
}

var tree = new BinaryTree();
tree.Root = new Node(1);
tree.Root.Left = new Node(2);
tree.Root.Right = new Node(3);
tree.Root.Left.Left = new Node(4);
tree.Root.Left.Right = new Node(5);

Console.WriteLine(tree.Height(tree.Root));
A3
B2
C4
D5
Attempts:
2 left
💡 Hint
Count the number of nodes on the longest path from root to leaf.
❓ Predict Output
intermediate
2:00remaining
What does this code print for an empty tree?
Given the following code, what is the output when the tree is empty (root is null)?
DSA C#
class Node {
    public int Value;
    public Node Left, Right;
    public Node(int val) { Value = val; Left = Right = null; }
}

class BinaryTree {
    public Node Root = null;

    public int Height(Node node) {
        if (node == null) return 0;
        int leftHeight = Height(node.Left);
        int rightHeight = Height(node.Right);
        return 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);
    }
}

var tree = new BinaryTree();
Console.WriteLine(tree.Height(tree.Root));
A1
B0
Cnull
DException
Attempts:
2 left
💡 Hint
What is the height of a tree with no nodes?
🔧 Debug
advanced
2:00remaining
Why does this code cause a stack overflow?
Examine the code below. It is intended to compute the height of a binary tree but causes a stack overflow error. What is the reason?
DSA C#
class Node {
    public int Value;
    public Node Left, Right;
    public Node(int val) { Value = val; Left = Right = null; }
}

class BinaryTree {
    public Node Root;

    public int Height(Node node) {
        if (node == null) return 0;
        int leftHeight = Height(node);
        int rightHeight = Height(node.Right);
        return 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);
    }
}
AThe base case is missing, so recursion never stops.
BThe node parameter is never checked for null, causing a null reference exception.
CThe method uses the wrong comparison operator in the return statement.
DThe method calls Height(node) recursively without moving to child nodes, causing infinite recursion.
Attempts:
2 left
💡 Hint
Check the recursive calls carefully to see if they progress down the tree.
🧠 Conceptual
advanced
2:00remaining
What is the time complexity of computing the height of a binary tree?
Given a binary tree with n nodes, what is the time complexity of the recursive height calculation method?
AO(n)
BO(log n)
CO(n^2)
DO(1)
Attempts:
2 left
💡 Hint
Consider how many nodes the function visits.
🚀 Application
expert
3:00remaining
What is the height of this unbalanced binary tree?
Given the following tree structure, what is the height computed by the Height method?
DSA C#
class Node {
    public int Value;
    public Node Left, Right;
    public Node(int val) { Value = val; Left = Right = null; }
}

class BinaryTree {
    public Node Root;

    public int Height(Node node) {
        if (node == null) return 0;
        int leftHeight = Height(node.Left);
        int rightHeight = Height(node.Right);
        return 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);
    }
}

var tree = new BinaryTree();
tree.Root = new Node(10);
tree.Root.Right = new Node(20);
tree.Root.Right.Right = new Node(30);
tree.Root.Right.Right.Right = new Node(40);

Console.WriteLine(tree.Height(tree.Root));
A2
B3
C4
D1
Attempts:
2 left
💡 Hint
Count nodes along the longest path from root to leaf.

Practice

(1/5)
1. What does the height of a binary tree represent?
easy
A. The number of edges on the longest path from root to a leaf
B. The total number of nodes in the tree
C. The number of leaf nodes in the tree
D. The number of children of the root node

Solution

  1. Step 1: Understand the definition of height in a binary tree

    The height is defined as the longest path from the root node down to the farthest leaf node, counted by edges.
  2. Step 2: Compare with other options

    Other options describe different properties: total nodes, leaf count, or root children, which are not height.
  3. Final Answer:

    The number of edges on the longest path from root to a leaf -> Option A
  4. Quick Check:

    Height = longest root-to-leaf edge count [OK]
Hint: Height counts edges, not nodes or leaves [OK]
Common Mistakes:
  • Confusing height with total nodes
  • Counting nodes instead of edges
  • Thinking height is number of leaves
2. Which of the following C# method signatures correctly defines a recursive function to find the height of a binary tree node named root?
easy
A. public int Height(Node root, int height)
B. public void Height(Node root)
C. public int Height()
D. public int Height(Node root)

Solution

  1. Step 1: Identify correct return type and parameters

    The height function must return an integer representing height, so return type is int. It needs the root node as input, so parameter is Node root.
  2. Step 2: Check options for matching signature

    public int Height(Node root) matches: returns int and takes Node root. public void Height(Node root) returns void (wrong), C has no parameters (wrong), D has extra parameter not needed for basic height.
  3. Final Answer:

    public int Height(Node root) -> Option D
  4. Quick Check:

    Return int and take root node parameter [OK]
Hint: Height returns int and takes root node as parameter [OK]
Common Mistakes:
  • Using void return type
  • Missing root parameter
  • Adding unnecessary parameters
3. What is the output of the following C# code snippet that calculates the height of a binary tree?
class Node {
  public int data;
  public Node left, right;
  public Node(int d) { data = d; left = right = null; }
}

int Height(Node root) {
  if (root == null) return -1;
  int leftHeight = Height(root.left);
  int rightHeight = Height(root.right);
  return Math.Max(leftHeight, rightHeight) + 1;
}

// Tree:
//     1
//    / \
//   2   3
//  /
// 4

Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);

Console.WriteLine(Height(root));
medium
A. 1
B. 3
C. 2
D. 4

Solution

  1. Step 1: Understand the height calculation logic

    Height returns -1 for null nodes. For leaf nodes, height = 0. Height is max of left and right subtree heights plus 1.
  2. Step 2: Calculate height for given tree

    Node 4: left and right null, height = 0.
    Node 2: left height 0 (node 4), right null (-1), max=0 +1=1.
    Node 3: leaf, height=0.
    Root 1: left height 1, right height 0, max=1 +1=2.
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    Height of root = 2 edges [OK]
Hint: Height counts edges; leaf node height is 0 [OK]
Common Mistakes:
  • Counting nodes instead of edges
  • Returning 0 for null instead of -1
  • Miscomputing max height
4. Identify the error in this C# method to find the height of a binary tree and select the fix:
int Height(Node root) {
  if (root == null) return 0;
  int leftHeight = Height(root.left);
  int rightHeight = Height(root.right);
  return Math.Max(leftHeight, rightHeight);
}
medium
A. Change base case return from 0 to -1
B. Add +1 to the return statement after Math.Max
C. Remove recursive calls to left and right
D. Change Math.Max to Math.Min

Solution

  1. Step 1: Analyze base case and return statement

    Base case returns 0 for null, which means height of empty tree is 0. The recursive calls get left and right heights correctly.
  2. Step 2: Check final return calculation

    Height should be max of left and right heights plus 1 for current node. The code misses +1, so height is underestimated.
  3. Final Answer:

    Add +1 to the return statement after Math.Max -> Option B
  4. Quick Check:

    Height = max(left, right) + 1 [OK]
Hint: Add +1 after max to count current node [OK]
Common Mistakes:
  • Forgetting +1 in return
  • Changing base case incorrectly
  • Using min instead of max
5. Given a binary tree where each node stores an integer, write a method to find the height of the tree and then return the sum of all node values at the maximum height level. Which approach correctly solves this problem?
hard
A. First find height, then traverse tree again to sum nodes at that height
B. Sum all nodes during height calculation recursively
C. Return height multiplied by root node value
D. Sum all leaf nodes regardless of height

Solution

  1. Step 1: Understand problem requirements

    We need the height of the tree and sum of nodes at that height level (deepest level).
  2. Step 2: Choose correct approach

    First find height, then traverse tree again to sum nodes at that height: Find height first, then traverse again to sum nodes at that level. This separates concerns and is clear.
    Sum all nodes during height calculation recursively tries to sum during height calculation, but height is computed bottom-up and summing nodes at max height requires separate traversal.
    Return height multiplied by root node value and D do not meet problem requirements.
  3. Final Answer:

    First find height, then traverse tree again to sum nodes at that height -> Option A
  4. Quick Check:

    Two-pass approach: height then sum at height [OK]
Hint: Find height first, then sum nodes at that level [OK]
Common Mistakes:
  • Trying to sum nodes during height recursion
  • Multiplying height by root value
  • Summing all leaf nodes ignoring height
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