Step 1: Start at root node 1 with horizontal distance (hd) = 0
Queue: [(1, hd=0)]
Top view map: {}Why: Root is the starting point and has horizontal distance zero
Step 2: Dequeue node 1, record hd=0 in top view map as 1
Queue: []
Top view map: {0: 1}Why: First node at hd=0 is visible from top
Step 3: Enqueue left child 2 with hd=-1 and right child 3 with hd=1
Queue: [(2, hd=-1), (3, hd=1)]
Top view map: {0: 1}Why: Left child is one step left, right child one step right
Step 4: Dequeue node 2, record hd=-1 in top view map as 2
Queue: [(3, hd=1)]
Top view map: {-1: 2, 0: 1}Why: First node at hd=-1 is visible from top
Step 5: Enqueue right child 4 of node 2 with hd=0
Queue: [(3, hd=1), (4, hd=0)]
Top view map: {-1: 2, 0: 1}Why: Child 4 is at hd=0 but hd=0 already recorded, so ignore for top view
Step 6: Dequeue node 3, record hd=1 in top view map as 3
Queue: [(4, hd=0)]
Top view map: {-1: 2, 0: 1, 1: 3}Why: First node at hd=1 is visible from top
Step 7: Enqueue right child 5 of node 3 with hd=2
Queue: [(4, hd=0), (5, hd=2)]
Top view map: {-1: 2, 0: 1, 1: 3}Why: Child 5 is at hd=2, not recorded yet
Step 8: Dequeue node 4 at hd=0, hd=0 already recorded, ignore
Queue: [(5, hd=2)]
Top view map: {-1: 2, 0: 1, 1: 3}Why: Only first node at each hd is visible from top
Step 9: Dequeue node 5, record hd=2 in top view map as 5
Queue: []
Top view map: {-1: 2, 0: 1, 1: 3, 2: 5}Why: First node at hd=2 is visible from top
Result: Top view nodes in order of hd: 2 -> 1 -> 3 -> 5