📖 Scenario: You are working with a simple binary tree structure used in many applications like organizing data or representing decisions. Your task is to count how many nodes are in this tree.
🎯 Goal: Build a TypeScript program that creates a binary tree, sets up a counter, counts all nodes in the tree using a function, and prints the total count.
📋 What You'll Learn
Create a binary tree using the given TreeNode class
Create a variable count to hold the total number of nodes
Write a recursive function countNodes that counts nodes in the tree
Print the total number of nodes using console.log
💡 Why This Matters
🌍 Real World
Counting nodes in a binary tree is useful in many areas like file systems, decision trees, and organizing data hierarchically.
💼 Career
Understanding tree traversal and counting nodes is a fundamental skill for software developers working with data structures, algorithms, and system design.
Progress0 / 4 steps
1
Create the binary tree
Create the binary tree nodes using the TreeNode class exactly as shown: root node with value 1, left child with value 2, and right child with value 3. Assign the root node to a variable called root.
DSA Typescript
Hint
Use the new TreeNode(value, left, right) constructor to create nodes. The root has value 1, left child 2, and right child 3.
2
Create a count variable
Create a variable called count and set it to 0. This will hold the total number of nodes counted.
DSA Typescript
Hint
Use let count = 0; to create the variable.
3
Write the recursive function to count nodes
Write a recursive function called countNodes that takes a TreeNode | null parameter called node. If node is not null, increase count by 1, then call countNodes on node.left and node.right.
DSA Typescript
Hint
Use a function with a base check for null. Increase count by 1 for each node, then call the function on left and right children.
4
Call the function and print the total count
Call the function countNodes with the variable root as argument. Then print the value of count using console.log(count).
DSA Typescript
Hint
Call countNodes(root); then print count with console.log(count);.
Practice
(1/5)
1. What does the function to count total nodes in a binary tree return when the tree is empty?
easy
A. -1
B. 1
C. 0
D. null
Solution
Step 1: Understand the base case for an empty tree
When the binary tree is empty, there are no nodes to count, so the count should be zero.
Step 2: Confirm the function's return value for empty input
The function should return 0 to indicate no nodes exist in the tree.
Final Answer:
0 -> Option C
Quick Check:
Empty tree node count = 0 [OK]
Hint: Empty tree always has zero nodes [OK]
Common Mistakes:
Returning 1 for empty tree
Returning null instead of 0
Confusing empty tree with leaf node
2. Which of the following TypeScript function signatures correctly defines a function to count total nodes in a binary tree node structure?
easy
A. function countNodes(root: number): number
B. function countNodes(root: any): string
C. function countNodes(root: TreeNode): void
D. function countNodes(root: TreeNode | null): number
Solution
Step 1: Identify correct parameter type for binary tree root
The root should be a TreeNode or null if the tree is empty.
Step 2: Confirm return type for count function
The function returns a number representing total nodes, so return type must be number.
Final Answer:
function countNodes(root: TreeNode | null): number -> Option D
Quick Check:
Correct parameter and return types = function countNodes(root: TreeNode | null): number [OK]
Hint: Function must accept node or null and return number [OK]
Common Mistakes:
Using wrong parameter type
Returning void instead of number
Returning string instead of number
3. Given the following binary tree code, what is the output of console.log(countNodes(root));?
class TreeNode {
val: number;
left: TreeNode | null;
right: TreeNode | null;
constructor(val: number) {
this.val = val;
this.left = null;
this.right = null;
}
}
function countNodes(root: TreeNode | null): number {
if (!root) return 0;
return 1 + countNodes(root.left) + countNodes(root.right);
}
const root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
medium
A. 5
B. 6
C. 4
D. 3
Solution
Step 1: Count nodes in the tree structure
The tree has nodes: 1 (root), 2 and 3 (children), 4 and 5 (children of 2). Total nodes = 5.
Step 2: Verify recursive count function output
The function counts 1 for root plus counts of left and right subtrees, summing to 5.
Final Answer:
5 -> Option A
Quick Check:
Total nodes counted = 5 [OK]
Hint: Count all nodes including root and children [OK]
Common Mistakes:
Counting only leaf nodes
Missing one subtree
Off-by-one error in count
4. Identify the error in the following TypeScript function to count total nodes in a binary tree:
function countNodes(root: TreeNode | null): number {
if (root === null) return 1;
return 1 + countNodes(root.left) + countNodes(root.right);
}
medium
A. Function does not count the current node
B. Base case returns 1 instead of 0 for null
C. Missing return type annotation
D. Incorrect parameter type
Solution
Step 1: Check base case return value
The base case returns 1 when root is null, which incorrectly counts non-existent nodes.
Step 2: Understand correct base case for counting nodes
For null nodes, the count should be 0, not 1, to avoid overcounting.
Final Answer:
Base case returns 1 instead of 0 for null -> Option B
Quick Check:
Base case must return 0 for null [OK]
Hint: Base case for null must return 0 nodes [OK]
Common Mistakes:
Returning 1 for null node
Not counting current node
Wrong parameter or return types
5. You want to count total nodes in a binary tree but only count nodes with even values. Which modification to the standard count function is correct?
function countEvenNodes(root: TreeNode | null): number {
if (!root) return 0;
const leftCount = countEvenNodes(root.left);
const rightCount = countEvenNodes(root.right);
// What to add here?
}