A binary tree is a structure where each node has at most two children, called left and right child.
Click to reveal answer
beginner
How do you count total nodes in a binary tree?
Count 1 for the current node plus the count of nodes in the left subtree and the right subtree.
Click to reveal answer
beginner
What is the base case when counting nodes recursively in a binary tree?
When the current node is null, return 0 because there are no nodes to count.
Click to reveal answer
intermediate
Why is recursion useful for counting nodes in a binary tree?
Because each node's count depends on counts of its left and right children, recursion naturally breaks the problem into smaller parts.
Click to reveal answer
intermediate
What is the time complexity of counting total nodes in a binary tree?
O(n), where n is the number of nodes, because each node is visited once.
Click to reveal answer
What should the function return when the current node is null?
A1
B0
C-1
Dnull
✗ Incorrect
When the node is null, it means no node exists there, so count is 0.
Which traversal method is naturally used to count nodes recursively?
AInorder
BPostorder
CPreorder
DLevel order
✗ Incorrect
Preorder traversal visits the current node first, then left and right, which fits counting nodes.
If a binary tree has 5 nodes, what will be the total count returned?
A0
B4
C6
D5
✗ Incorrect
The total count is the number of nodes present, so 5.
What is the time complexity of counting nodes in a binary tree?
AO(n)
BO(log n)
CO(1)
DO(n^2)
✗ Incorrect
Each node is visited once, so time complexity is O(n).
Which of these is NOT needed to count nodes in a binary tree?
AParent node value
BLeft subtree count
CRight subtree count
DCurrent node
✗ Incorrect
Parent node value is not needed to count nodes.
Explain how recursion helps in counting total nodes in a binary tree.
Think about how you break the problem into smaller parts.
You got /4 concepts.
Describe the steps to count nodes in a binary tree using a recursive function.
Start from the root and think about what to do at each node.
You got /4 concepts.
Practice
(1/5)
1. What does the function to count total nodes in a binary tree do?
easy
A. Counts only the leaf nodes
B. Counts nodes only on the left subtree
C. Counts only the root node
D. Counts all nodes including root, left, and right children
Solution
Step 1: Understand the node counting concept
The function counts every node in the tree, including root and all children.
Step 2: Differentiate from partial counts
Counting only leaves or root ignores other nodes, so total count includes all nodes.
Final Answer:
Counts all nodes including root, left, and right children -> Option D
Quick Check:
Total nodes = all nodes in tree [OK]
Hint: Count every node visited in tree traversal [OK]
Common Mistakes:
Counting only leaf nodes
Ignoring root node
Counting only one subtree
2. Which of the following is the correct C# syntax to define a binary tree node class for counting nodes?
easy
A. public class Node { public int data; public Node left, right; }
B. class Node { int data; Node left, right; void count() {} }
C. public struct Node { int data; Node left; Node right; }
D. class Node { public int data; public Node left; private Node right; }
Solution
Step 1: Check class and member access
public class Node { public int data; public Node left, right; } correctly defines a public class with public members for data and child nodes.
Step 2: Verify syntax correctness
class Node { int data; Node left, right; void count() {} } misses access modifiers and method is irrelevant; C uses struct which is less common; D has private right node which restricts access.
Final Answer:
public class Node { public int data; public Node left, right; } -> Option A
Quick Check:
Correct class with public members [OK]
Hint: Use public class with public node references [OK]
Common Mistakes:
Missing public keyword
Using struct instead of class
Private child nodes blocking access
3. What is the output of the following C# code that counts nodes in a binary tree?
class Node {
public int data;
public Node left, right;
public Node(int val) { data = val; left = right = null; }
}
int CountNodes(Node root) {
if (root == null) return 0;
return 1 + CountNodes(root.left) + CountNodes(root.right);
}
// 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(CountNodes(root));
medium
A. 4
B. 3
C. 5
D. 6
Solution
Step 1: Count nodes in the tree structure
The tree has nodes: 1 (root), 2 (left child), 3 (right child), and 4 (left child of 2), total 4 nodes.
Step 2: Apply recursive count function
CountNodes returns 1 + left subtree count + right subtree count, summing to 4.
Final Answer:
4 -> Option A
Quick Check:
Nodes counted = 4 [OK]
Hint: Add 1 for root plus counts of left and right [OK]
Common Mistakes:
Counting only children, missing root
Miscounting null nodes
Adding extra nodes
4. Identify the error in this C# method to count total nodes in a binary tree:
int CountNodes(Node root) {
if (root == null) return 1;
return CountNodes(root.left) + CountNodes(root.right);
}
medium
A. Returns 1 for null node instead of 0
B. Does not count the current root node
C. All of the above
D. Missing addition of 1 for current node
Solution
Step 1: Check base case return value
Returning 1 for null node is incorrect; it should be 0 because null means no node.
Step 2: Check counting logic for current node
Function does not add 1 for the current root node, so it misses counting it.
Step 3: Combine errors
Both base case and missing addition cause wrong total count.
Final Answer:
All of the above -> Option C
Quick Check:
Base case and counting errors combined [OK]
Hint: Base case returns 0; add 1 for current node [OK]
Common Mistakes:
Returning 1 for null node
Not adding 1 for current node
Ignoring base case correctness
5. Given a binary tree where some nodes have only one child, how would you modify the counting function to count only nodes that have at least one child?
hard
A. Count only leaf nodes
B. Count nodes where left or right child is not null, recursively
C. Count all nodes including leaves
D. Count nodes with both children null
Solution
Step 1: Define condition for counting nodes
We want to count nodes that have at least one child, so check if left or right child is not null.
Step 2: Modify recursive function accordingly
Recursively count nodes where left or right child exists, ignoring leaf nodes with no children.
Step 3: Implement logic
Return 1 + counts of children if node has child; else 0 for leaf nodes.
Final Answer:
Count nodes where left or right child is not null, recursively -> Option B
Quick Check:
Count nodes with children only [OK]
Hint: Count nodes with at least one child only [OK]
Common Mistakes:
Counting all nodes including leaves
Counting only leaves
Counting nodes with no children
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.