Bird
Raised Fist0
DSA Goprogramming~5 mins

Top View of Binary Tree in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Top View of a binary tree?
The top view of a binary tree is the set of nodes visible when the tree is seen from above. It includes the nodes that are the 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/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 finding 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?
The time complexity is O(n), where n is the number of nodes, because each node is visited once during level order traversal.
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
Which traversal method is best suited to find the top view of a binary tree?
AInorder traversal
BPreorder traversal
CPostorder traversal
DLevel order traversal
When two nodes share the same horizontal distance, which node is included in the top view?
AThe one at the higher level
BThe one at the lower level
CThe rightmost node
DThe leftmost node
What data structure is used to keep track of nodes at each horizontal distance?
AStack
BQueue
CMap or dictionary
DLinked list
What is the output of the top view for a tree with nodes 1 (root), 2 (left child), and 3 (right child)?
A1 -> 2 -> 3
B2 -> 1 -> 3
C1 only
D2 -> 3
Explain how to find 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.
    Why is level order traversal important for the top view of a binary tree?
    Consider how nodes appear from top and which nodes hide others.
    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 above
      D. Nodes visible when the tree is viewed from the right side

      Solution

      1. Step 1: Understand the top view concept

        The top view of a binary tree includes all nodes visible when looking down vertically from above the tree.
      2. Step 2: Differentiate from other views

        Left or right views show nodes from side angles, while top view shows nodes from above.
      3. Final Answer:

        Nodes visible when the tree is viewed from above -> Option C
      4. 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
      • Including all leaf nodes as top view
      • Thinking top view shows all nodes
      2. Which Go data structure is best suited to store nodes for computing the top view of a binary tree?
      easy
      A. Map with horizontal distance as key
      B. Array
      C. Slice
      D. Linked list

      Solution

      1. Step 1: Identify the need for horizontal distance mapping

        Top view requires tracking nodes by their horizontal distance from root to avoid duplicates.
      2. Step 2: Choose data structure supporting key-value pairs

        A map with horizontal distance as key stores the first node at each horizontal distance efficiently.
      3. Final Answer:

        Map with horizontal distance as key -> Option A
      4. Quick Check:

        Use map for horizontal distance keys [OK]
      Hint: Use map keyed by horizontal distance for top view [OK]
      Common Mistakes:
      • Using slice or array without horizontal distance keys
      • Using linked list which lacks key access
      • Ignoring horizontal distance concept
      3. Given the following Go code snippet for top view, what will be printed?
      type Node struct {
        Val int
        Left, Right *Node
      }
      
      func topView(root *Node) []int {
        if root == nil {
          return []int{}
        }
        type pair struct { node *Node; hd int }
        queue := []pair{{root, 0}}
        m := map[int]int{}
        res := []int{}
      
        for len(queue) > 0 {
          p := queue[0]
          queue = queue[1:]
          if _, ok := m[p.hd]; !ok {
            m[p.hd] = p.node.Val
          }
          if p.node.Left != nil {
            queue = append(queue, pair{p.node.Left, p.hd - 1})
          }
          if p.node.Right != nil {
            queue = append(queue, pair{p.node.Right, p.hd + 1})
          }
        }
      
        keys := []int{}
        for k := range m {
          keys = append(keys, k)
        }
        sort.Ints(keys)
        for _, k := range keys {
          res = append(res, m[k])
        }
        return res
      }
      
      root := &Node{Val: 1}
      root.Left = &Node{Val: 2}
      root.Right = &Node{Val: 3}
      root.Left.Right = &Node{Val: 4}
      root.Left.Right.Right = &Node{Val: 5}
      root.Left.Right.Right.Right = &Node{Val: 6}
      
      fmt.Println(topView(root))
      medium
      A. [2 1 3]
      B. [2 1 3 6]
      C. [2 1 4 5 6]
      D. [1 2 3 4 5 6]

      Solution

      1. Step 1: Traverse nodes with horizontal distances

        Root(1) at hd=0, Left(2) at hd=-1, Right(3) at hd=1, Left.Right(4) at hd=0 (ignored), Left.Right.Right(5) at hd=1 (ignored), Left.Right.Right.Right(6) at hd=2.
      2. Step 2: Collect first nodes at each horizontal distance

        hd=-1:2, hd=0:1, hd=1:3, hd=2:6
      3. Final Answer:

        [2 1 3 6] -> Option B
      4. Quick Check:

        Top view nodes by hd sorted: 2,1,3,6 [OK]
      Hint: First node at each horizontal distance forms top view [OK]
      Common Mistakes:
      • Including nodes overwritten at same horizontal distance
      • Ignoring horizontal distance ordering
      • Confusing top view with level order
      4. The following Go code attempts to compute the top view of a binary tree but has a bug. What is the bug?
      func topView(root *Node) []int {
        if root == nil {
          return []int{}
        }
        type pair struct { node *Node; hd int }
        queue := []pair{{root, 0}}
        m := map[int]int{}
        res := []int{}
      
        for len(queue) > 0 {
          p := queue[0]
          queue = queue[1:]
          m[p.hd] = p.node.Val
          if p.node.Left != nil {
            queue = append(queue, pair{p.node.Left, p.hd - 1})
          }
          if p.node.Right != nil {
            queue = append(queue, pair{p.node.Right, p.hd + 1})
          }
        }
      
        keys := []int{}
        for k := range m {
          keys = append(keys, k)
        }
        sort.Ints(keys)
        for _, k := range keys {
          res = append(res, m[k])
        }
        return res
      }
      medium
      A. It overwrites nodes at the same horizontal distance, losing top view nodes
      B. It does not handle nil root properly
      C. It uses a slice instead of a queue
      D. It does not sort the keys before output

      Solution

      1. Step 1: Analyze map assignment inside loop

        The code assigns m[p.hd] = p.node.Val every time, overwriting previous values at same horizontal distance.
      2. Step 2: Understand top view requirement

        Top view requires storing only the first node encountered at each horizontal distance, so overwriting causes incorrect output.
      3. Final Answer:

        It overwrites nodes at the same horizontal distance, losing top view nodes -> Option A
      4. Quick Check:

        Overwrite causes wrong top view [OK]
      Hint: Store first node per horizontal distance only [OK]
      Common Mistakes:
      • Overwriting map entries instead of checking existence
      • Ignoring horizontal distance uniqueness
      • Not sorting keys before output
      5. You have a binary tree where multiple nodes share the same horizontal distance and level. How should you modify the top view algorithm to always show the node with the smallest value at each horizontal distance?
      hard
      A. Store the last node encountered at each horizontal distance regardless of value
      B. Use a stack instead of a queue for traversal
      C. Ignore horizontal distance and print all nodes at the top level
      D. Store the node with the smallest value for each horizontal distance, updating if a smaller value is found

      Solution

      1. Step 1: Understand the problem with duplicates

        When nodes share horizontal distance and level, top view must pick one node per horizontal distance.
      2. Step 2: Modify map to track smallest value

        Instead of storing first node only, update stored node if a smaller value is found at the same horizontal distance.
      3. Step 3: Implement comparison logic

        Check if current node's value is smaller than stored; if yes, replace it in the map.
      4. Final Answer:

        Store the node with the smallest value for each horizontal distance, updating if a smaller value is found -> Option D
      5. Quick Check:

        Keep smallest value per horizontal distance [OK]
      Hint: Update map only if new node value is smaller [OK]
      Common Mistakes:
      • Ignoring node values when duplicates occur
      • Using last node instead of smallest value
      • Changing traversal order instead of map logic
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard