What is Vertical Order Traversal of a Binary Tree?
It is a way to print the nodes of a binary tree column by column from left to right. Nodes in the same vertical line are grouped together.
Click to reveal answer
beginner
How do we assign horizontal distances (HD) to nodes in Vertical Order Traversal?
The root node is assigned 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
Why do we use a queue and a map in Vertical Order Traversal?
A queue helps in level order traversal to process nodes level by level. A map stores nodes grouped by their horizontal distance for final vertical order output.
Click to reveal answer
intermediate
What data structure is commonly used to keep track of nodes and their horizontal distances during traversal?
A queue of pairs (node, horizontal distance) is used to process nodes in order and track their vertical positions.
Click to reveal answer
advanced
How do we handle nodes that share the same horizontal distance and level in Vertical Order Traversal?
They are printed in the order they appear in the level order traversal, usually from left to right.
Click to reveal answer
In Vertical Order Traversal, what horizontal distance is assigned to the root node?
A1
B-1
C0
DDepends on tree height
✗ Incorrect
The root node is always assigned horizontal distance 0.
Which data structure is best to store nodes grouped by their horizontal distance?
AMap or Dictionary
BArray
CStack
DLinked List
✗ Incorrect
A map or dictionary stores nodes by their horizontal distance keys.
What traversal method is combined with horizontal distance tracking for Vertical Order Traversal?
APostorder
BInorder
CPreorder
DLevel order (BFS)
✗ Incorrect
Level order traversal (BFS) is used to process nodes level by level.
If a node is at horizontal distance 2, where is it located relative to the root?
ATwo steps right
BTwo steps left
CAt root
DCannot determine
✗ Incorrect
Positive horizontal distance means right side of the root.
How do we print the final vertical order after traversal?
AFrom highest to lowest horizontal distance
BFrom lowest to highest horizontal distance
CRandom order
DOnly nodes at horizontal distance 0
✗ Incorrect
We print nodes from the smallest to largest horizontal distance (left to right).
Explain step-by-step how to perform Vertical Order Traversal on a binary tree.
Think about how to combine level order traversal with horizontal distance tracking.
You got /5 concepts.
Describe how horizontal distances change when moving to left and right children in a binary tree.
Consider the root as the center point.
You got /3 concepts.
Practice
(1/5)
1. What does vertical order traversal of a binary tree primarily group nodes by?
easy
A. Their parent node
B. Their depth level in the tree
C. Their value magnitude
D. Their horizontal distance from the root
Solution
Step 1: Understand vertical order traversal concept
Vertical order traversal groups nodes based on their horizontal distance from the root node, also called the vertical column.
Step 2: Differentiate from other traversals
Unlike level order which groups by depth, vertical order groups nodes that align vertically when the tree is viewed from top.
Final Answer:
Their horizontal distance from the root -> Option D
Quick Check:
Vertical order = horizontal distance grouping [OK]
Hint: Remember vertical means grouping by horizontal distance [OK]
Common Mistakes:
Confusing vertical order with level order traversal
Grouping by node values instead of position
Ignoring horizontal distance concept
2. Which Go data structure is best suited to store nodes grouped by their vertical column during vertical order traversal?
easy
A. map[string]int
B. []int
C. map[int][]int
D. [][]int
Solution
Step 1: Identify grouping requirement
We need to group nodes by their vertical column index, which is an integer key.
Step 2: Choose suitable Go data structure
A map with integer keys and slice of integers as values (map[int][]int) allows storing multiple node values per vertical column.
Final Answer:
map[int][]int -> Option C
Quick Check:
Use map[int][]int for vertical groups [OK]
Hint: Use map with int keys and slice values for grouping [OK]
Common Mistakes:
Using simple slices without keys
Using map with string keys unnecessarily
Choosing 2D slices without keys
3. Given the binary tree:
1
/ \
2 3
/ \
4 5
What is the vertical order traversal output?
medium
A. [[4], [2], [1], [3], [5]]
B. [[4], [2], [1], [3, 5]]
C. [[4], [2, 1], [3, 5]]
D. [[1], [2, 3], [4, 5]]
Solution
Step 1: Assign horizontal distances
Root 1 is at 0, left child 2 at -1, left-left 4 at -2, right child 3 at +1, right-right 5 at +2.
Step 2: Group nodes by horizontal distance
At -2: [4], -1: [2], 0: [1], +1: [3], +2: [5].
Final Answer:
[[4], [2], [1], [3, 5]] -> Option B
Quick Check:
Group by horizontal distance = [[4], [2], [1], [3, 5]] [OK]
Hint: Label columns from left (-) to right (+) then group nodes [OK]
Common Mistakes:
Mixing node order inside same vertical column
Incorrect horizontal distance assignment
Ignoring multiple nodes in same vertical column
4. Consider this Go snippet for vertical order traversal:
func verticalOrder(root *Node) map[int][]int {
result := make(map[int][]int)
var dfs func(node *Node, hd int)
dfs = func(node *Node, hd int) {
if node == nil {
return
}
result[hd] = append(result[hd], node.Val)
dfs(node.Left, hd-1)
dfs(node.Right, hd+1)
}
dfs(root, 0)
return result
}
What is the main issue with this code?
medium
A. It uses DFS which may not preserve top-to-bottom order
B. It does not handle nil root input
C. It uses map instead of slice for result
D. It increments horizontal distance incorrectly
Solution
Step 1: Analyze traversal method
The code uses DFS which explores depth first, so nodes deeper may be added before shallower nodes in same vertical column.
Step 2: Understand vertical order requirement
Vertical order traversal requires nodes to be output top-to-bottom per vertical column, which BFS preserves but DFS may not.
Final Answer:
It uses DFS which may not preserve top-to-bottom order -> Option A
Quick Check:
DFS can misorder vertical nodes top-to-bottom [OK]
Hint: Use BFS, not DFS, to keep top-to-bottom order [OK]
Common Mistakes:
Assuming DFS preserves vertical order top-to-bottom
Ignoring traversal order impact on output
Thinking map usage causes order issues
5. You want to print the vertical order traversal of a binary tree sorted by vertical column from left to right and nodes top to bottom within each column. Which approach is best?
hard
A. Use BFS with a queue storing nodes and their horizontal distance, then sort keys
B. Use DFS with recursion and store nodes in map without sorting
C. Use inorder traversal and print nodes as visited
D. Use a stack to store nodes and print after traversal
Solution
Step 1: Choose traversal preserving top-to-bottom order
BFS visits nodes level by level, ensuring top nodes are processed before lower nodes in same vertical column.
Step 2: Store nodes with horizontal distance and sort keys
Use a queue to track nodes and their horizontal distance, store in map[int][]int, then output sorted by keys for left to right order.
Final Answer:
Use BFS with a queue storing nodes and their horizontal distance, then sort keys -> Option A
Quick Check:
BFS + sorting keys = correct vertical order traversal [OK]
Hint: BFS + map + sort keys for correct vertical order [OK]
Common Mistakes:
Using DFS which breaks top-to-bottom order
Not sorting map keys before printing
Using stack which reverses order
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.