The diameter of a binary tree is the length of the longest path between any two nodes in the tree. This path may or may not pass through the root.
Click to reveal answer
intermediate
How do you calculate the diameter of a binary tree using recursion?
Calculate the height of left and right subtrees for each node, then the diameter at that node is left height + right height. The overall diameter is the maximum of these values for all nodes.
Click to reveal answer
intermediate
Why do we use a helper function to calculate height when finding the diameter?
Because height calculation is needed repeatedly for each node to find the longest path through it. A helper function returns height and updates diameter simultaneously to avoid repeated calculations.
Click to reveal answer
intermediate
What is the time complexity of the diameter of binary tree algorithm using a single traversal?
The time complexity is O(n), where n is the number of nodes, because each node is visited once during the height and diameter calculation.
Click to reveal answer
beginner
Can the diameter path pass through the root node?
Yes, the diameter path can pass through the root node, but it is not necessary. The longest path can be anywhere in the tree.
Click to reveal answer
What does the diameter of a binary tree represent?
AThe number of leaf nodes
BThe height of the tree
CThe number of nodes in the tree
DThe longest path between any two nodes
✗ Incorrect
The diameter is the longest path between any two nodes in the tree.
Which of these is needed to calculate the diameter at a node?
ANumber of children of the node
BOnly the height of the left subtree
CSum of heights of left and right subtrees
DOnly the height of the right subtree
✗ Incorrect
Diameter at a node = left subtree height + right subtree height.
What is the best time complexity to find the diameter of a binary tree?
AO(n)
BO(n^2)
CO(log n)
DO(1)
✗ Incorrect
Using a single traversal, diameter can be found in O(n) time.
Does the diameter path always pass through the root node?
ANo, it can be anywhere in the tree
BYes, always
COnly if the tree is balanced
DOnly if the tree is a full binary tree
✗ Incorrect
The diameter path can be anywhere, not necessarily through the root.
Why is a helper function useful in diameter calculation?
ATo print the tree nodes
BTo calculate height and update diameter in one traversal
CTo count leaf nodes
DTo balance the tree
✗ Incorrect
Helper function calculates height and updates diameter simultaneously to optimize.
Explain how to find the diameter of a binary tree using recursion.
Think about longest path through each node.
You got /4 concepts.
Describe why the diameter path might not pass through the root node.
Consider a tree where one subtree is much deeper.
You got /3 concepts.
Practice
(1/5)
1. What does the diameter of a binary tree represent?
easy
A. The number of leaf nodes in the tree
B. The length of the longest path between any two nodes in the tree
C. The height of the tree
D. The total number of nodes in the tree
Solution
Step 1: Understand the diameter definition
The diameter is the longest path between any two nodes, which may or may not pass through the root.
Step 2: Differentiate from other tree properties
Height is the longest path from root to leaf, leaf count is number of leaves, total nodes is size, none of which define diameter.
Final Answer:
The length of the longest path between any two nodes in the tree -> Option B
Quick Check:
Diameter = Longest path between nodes [OK]
Hint: Diameter is longest path between any two nodes [OK]
Common Mistakes:
Confusing diameter with height
Thinking diameter counts nodes instead of edges
Assuming diameter must pass through root
2. Which of the following Java method signatures correctly represents a recursive function to find the diameter of a binary tree node?
easy
A. public int diameter(int root)
B. public void diameter(TreeNode root)
C. public String diameter(TreeNode root)
D. public int diameter(TreeNode root)
Solution
Step 1: Identify correct parameter type
The method must accept a TreeNode object representing the root of the tree or subtree.
Step 2: Identify correct return type
Diameter is a number (int), so return type should be int, not void or String.
Final Answer:
public int diameter(TreeNode root) -> Option D
Quick Check:
Method returns int and takes TreeNode [OK]
Hint: Diameter method returns int and takes TreeNode [OK]
Common Mistakes:
Using void return type for diameter
Passing int instead of TreeNode
Returning String instead of int
3. Given the following binary tree code snippet, what is the diameter of the tree?
class TreeNode {
int val;
TreeNode left, right;
TreeNode(int x) { val = x; }
}
TreeNode 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);
// Diameter calculation code omitted for brevity
medium
A. 2
B. 5
C. 3
D. 4
Solution
Step 1: Visualize the tree structure
The tree has root 1, left child 2 with children 4 and 5, and right child 3.
Step 2: Find longest path between any two nodes
Longest path is from node 4 to node 3 via 2 and 1: path 4->2->1->3 = 3 edges, diameter = 3.
Final Answer:
3 -> Option C
Quick Check:
Longest path length = 3 edges [OK]
Hint: Count edges on longest path between two nodes [OK]
Common Mistakes:
Counting nodes instead of edges or vice versa
Ignoring paths not passing through root
Miscounting edges in path
4. Identify the bug in this diameter calculation method and select the fix:
int diameter = 0;
int height(TreeNode root) {
if (root == null) return 0;
int left = height(root.left);
int right = height(root.right);
diameter = Math.max(diameter, left + right);
return Math.max(left, right);
}
medium
A. Return Math.max(left, right) + 1 instead of Math.max(left, right)
B. Initialize diameter inside height method
C. Use diameter = Math.min(diameter, left + right)
D. Return left + right instead of Math.max(left, right)
Solution
Step 1: Understand height calculation
Height of a node is 1 plus max height of its children, so must add +1.
Step 2: Identify bug in return statement
Current code returns max(left, right) without +1, so height is underestimated.
Final Answer:
Return Math.max(left, right) + 1 instead of Math.max(left, right) -> Option A
Quick Check:
Height = max child height + 1 [OK]
Hint: Height adds 1 to max child height [OK]
Common Mistakes:
Forgetting to add +1 in height return
Using min instead of max for diameter update
Returning sum of left and right as height
5. You want to find the diameter of a binary tree but also print the nodes on the longest path. Which approach is best?
hard
A. Modify the diameter function to store and return the longest path nodes along with diameter
B. Calculate diameter first, then do a separate BFS to find longest path nodes
C. Use only height function and print nodes at max height
D. Count leaf nodes and assume longest path is between two leaves
Solution
Step 1: Understand diameter and path relationship
Diameter is longest path length; to print nodes, we must track path during diameter calculation.
Step 2: Choose approach that combines diameter and path tracking
Modifying diameter function to store nodes on longest path is efficient and direct.
Final Answer:
Modify the diameter function to store and return the longest path nodes along with diameter -> Option A
Quick Check:
Track path during diameter calc for nodes [OK]
Hint: Track nodes while computing diameter for path [OK]
Common Mistakes:
Running BFS separately wastes time
Assuming height equals diameter path
Counting leaves without path tracking
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.