What does the Top View of a binary tree represent?
The top view of a binary tree shows the nodes visible when the tree is seen from above. It includes the nodes that appear first at each horizontal distance from the root.
Click to reveal answer
beginner
How do we determine the horizontal distance (HD) of nodes in a binary tree?
The root node has HD = 0. For any node, its left child has HD = parent's HD - 1, and its right child has HD = parent's HD + 1.
Click to reveal answer
intermediate
Which data structure is commonly used to find the top view of a binary tree?
A queue is used for level order traversal, and a map (or dictionary) stores the first node encountered at each horizontal distance.
Click to reveal answer
intermediate
Why do we store only the first node at each horizontal distance when computing the top view?
Because the first node encountered at a horizontal distance during level order traversal is the topmost node visible from above at that horizontal distance.
Click to reveal answer
intermediate
What is the time complexity of finding the top view of a binary tree using level order traversal?
The time complexity is O(n), where n is the number of nodes, because each node is visited once.
Click to reveal answer
What is the horizontal distance of the root node in a binary tree?
A0
B1
C-1
DDepends on the tree height
✗ Incorrect
The root node is assigned a horizontal distance of 0 by definition.
Which traversal method is best suited to find the top view of a binary tree?
AInorder traversal
BPreorder traversal
CLevel order traversal
DPostorder traversal
✗ Incorrect
Level order traversal visits nodes level by level, which helps identify the first node at each horizontal distance.
In the top view, if two nodes share the same horizontal distance, which one is included?
AThe leftmost node
BThe node at the lower level
CThe rightmost node
DThe node at the higher level
✗ Incorrect
The node at the higher (top) level is visible from above, so it is included in the top view.
What data structure helps track the first node at each horizontal distance?
AStack
BMap or dictionary
CLinked list
DArray
✗ Incorrect
A map or dictionary stores horizontal distance as key and the first node's value as value.
What is the output of the top view for a single-node binary tree?
AThe single node itself
BNone of the above
CBoth left and right children
DEmpty
✗ Incorrect
With only one node, the top view is just that node.
Explain how to compute the top view of a binary tree step-by-step.
Think about how you see the tree from above and which nodes block others.
You got /5 concepts.
Describe why level order traversal is preferred over inorder or preorder for top view.
Consider which traversal visits nodes closest to the top first.
You got /4 concepts.
Practice
(1/5)
1. What does the top view of a binary tree represent?
easy
A. All leaf nodes of the tree
B. Nodes visible when the tree is viewed from the left side
C. Nodes visible when the tree is viewed from the right side
D. Nodes visible when the tree is viewed from above
Solution
Step 1: Understand the meaning of top view
The top view of a binary tree shows nodes that are visible when looking down vertically from above the tree.
Step 2: Compare with other views
Left or right views show nodes visible from sides, and leaf nodes are only the bottom nodes, so they are different.
Final Answer:
Nodes visible when the tree is viewed from above -> Option D
Quick Check:
Top view = nodes seen from above [OK]
Hint: Top view shows nodes visible from above only [OK]
Common Mistakes:
Confusing top view with left or right view
Thinking top view shows all leaf nodes
Assuming top view includes hidden nodes
2. Which C++ STL container is best suited to store nodes by their horizontal distance for top view calculation?
easy
A. std::map
B. std::stack
C. std::vector
D. std::queue
Solution
Step 1: Identify the need for horizontal distance mapping
Top view requires storing nodes by their horizontal distance from root, which can be negative or positive keys.
Step 2: Choose container supporting key-value pairs with sorted keys
std::map stores keys in sorted order and allows negative keys, unlike vector which uses indices starting at 0.
Final Answer:
std::map -> Option A
Quick Check:
Use map for horizontal distance keys [OK]
Hint: Use map to store nodes by horizontal distance [OK]
Common Mistakes:
Using vector which can't handle negative keys
Using stack or queue which don't map keys
Not sorting nodes by horizontal distance
3. What is the output of the top view for the following binary tree?
1
/ \
2 3
\ \
4 5
\ \
6 7
medium
A. [2, 1, 3, 5, 7]
B. [2, 1, 4, 6, 7]
C. [2, 1, 3, 4, 5]
D. [1, 2, 3, 4, 5, 6, 7]
Solution
Step 1: Assign horizontal distances (HD) to nodes
Root 1 has HD=0; left child 2 is HD=-1; right child 3 is HD=1; 4 is right of 2 so HD=0; 5 is right of 3 so HD=2; 6 is right of 4 so HD=1; 7 is right of 5 so HD=3.
Step 2: Select first node at each HD from top to bottom
HD=-1: 2; HD=0: 1; HD=1: 3; HD=2: 5; HD=3: 7. Nodes 4 and 6 are hidden behind 1 and 3 respectively.
Final Answer:
[2, 1, 3, 5, 7] -> Option A
Quick Check:
Top view nodes by HD = [2,1,3,5,7] [OK]
Hint: Pick first node at each horizontal distance [OK]
Common Mistakes:
Including nodes hidden behind others at same HD
Mixing order of nodes in output
Ignoring horizontal distance calculation
4. Identify the error in this C++ snippet for top view calculation:
std::map topViewMap;
std::queue> q;
q.push({root, 0});
while(!q.empty()) {
auto p = q.front(); q.pop();
Node* node = p.first;
int hd = p.second;
if(topViewMap.find(hd) == topViewMap.end())
topViewMap[hd] = node->data;
if(node->left) q.push({node->left, hd - 1});
if(node->right) q.push({node->right, hd + 1});
}
medium
A. Using std::map instead of unordered_map causes slower lookup
B. Incorrect horizontal distance update for left and right children
C. Not checking if node is nullptr before accessing node->left and node->right
D. Not clearing the queue before starting the loop
Solution
Step 1: Check node pointer usage inside loop
The code accesses node->left and node->right without verifying if node is nullptr, which can cause runtime errors if node is null.
Step 2: Verify other parts of code
Horizontal distances are updated correctly; queue is initialized properly; map choice is valid though unordered_map could be faster but not an error.
Final Answer:
Not checking if node is nullptr before accessing node->left and node->right -> Option C
Quick Check:
Always check node != nullptr before child access [OK]
Hint: Check node pointer before accessing children [OK]
Common Mistakes:
Ignoring nullptr checks causing crashes
Confusing horizontal distance updates
Assuming map choice causes errors
5. Given a binary tree where multiple nodes share the same horizontal distance and level, which node should appear in the top view?
hard
A. The node with the maximum value at that horizontal distance
B. The node that appears first in level order traversal at that horizontal distance
C. The node that appears last in level order traversal at that horizontal distance
D. The leftmost node at that horizontal distance regardless of level
Solution
Step 1: Understand top view node selection criteria
Top view shows the first node encountered at each horizontal distance when traversing level by level (top to bottom, left to right).
Step 2: Clarify why first node in level order is chosen
Because level order visits nodes by increasing depth, the first node at a horizontal distance is the topmost visible node.
Final Answer:
The node that appears first in level order traversal at that horizontal distance -> Option B
Quick Check:
Top view = first node per horizontal distance in level order [OK]
Hint: Pick first node at horizontal distance in level order [OK]
Common Mistakes:
Choosing node by max value instead of position
Picking last node instead of first in level order
Ignoring level order traversal importance
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.