Bird
Raised Fist0
DSA C#programming~10 mins

Vertical Order Traversal of Binary Tree in DSA C# - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a dictionary that maps integers to lists of integers for vertical traversal.

DSA C#
Dictionary<int, List<int>> verticalMap = new Dictionary<int, List<int>>();

// Add a new list for a vertical line if it does not exist
if (!verticalMap.ContainsKey([1])) {
    verticalMap[[1]] = new List<int>();
}
Drag options to blanks, or click blank then click option'
Anode.val
Blevel
Chd
Droot
Attempts:
3 left
💡 Hint
Common Mistakes
Using node value as key instead of horizontal distance.
Using level instead of horizontal distance.
2fill in blank
medium

Complete the code to enqueue the left child of the current node with updated horizontal distance.

DSA C#
if (currentNode.left != null) {
    queue.Enqueue((currentNode.left, [1]));
}
Drag options to blanks, or click blank then click option'
Alevel + 1
Bhd + 1
Clevel - 1
Dhd - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Increasing horizontal distance for left child.
Using level instead of horizontal distance.
3fill in blank
hard

Fix the error in the code that adds the current node's value to the vertical map list.

DSA C#
verticalMap[hd].[1](currentNode.val);
Drag options to blanks, or click blank then click option'
AAppend
BAdd
CInsert
DPush
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Append' which is not a List method in C#.
Using 'Push' which is for stacks.
4fill in blank
hard

Fill both blanks to complete the loop that processes nodes in the queue for vertical traversal.

DSA C#
while (queue.[1] > 0) {
    var (currentNode, hd) = queue.[2]();
    // process currentNode
}
Drag options to blanks, or click blank then click option'
ACount
BDequeue
CLength
DPop
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Length' which is not a Queue property.
Using 'Pop' which is for stacks.
5fill in blank
hard

Fill all three blanks to create a sorted dictionary from the vertical map keys and print the vertical order traversal.

DSA C#
foreach (var key in verticalMap.Keys.[1](k => k)) {
    verticalMap[key].[2]();
    Console.Write(string.Join(", ", verticalMap[key]) + [3]);
}
Drag options to blanks, or click blank then click option'
AOrderBy
BSort
C"\n"
D" -> "
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Sort' on keys which is not available for Keys collection.
Using wrong separator instead of newline.

Practice

(1/5)
1. What does the vertical order traversal of a binary tree represent?
easy
A. Nodes grouped by their depth level from top to bottom
B. Nodes grouped by their vertical columns from left to right
C. Nodes visited in preorder (root, left, right)
D. Nodes visited in postorder (left, right, root)

Solution

  1. Step 1: Understand vertical order traversal

    Vertical order traversal groups nodes by their vertical columns, where the root is at column 0, left child at column -1, right child at column +1, and so on.
  2. Step 2: Compare with other traversals

    Unlike level order or preorder, vertical order focuses on columns, not depth or visit order.
  3. Final Answer:

    Nodes grouped by their vertical columns from left to right -> Option B
  4. Quick Check:

    Vertical order = nodes by vertical columns [OK]
Hint: Vertical order groups nodes by columns, not levels or visit order [OK]
Common Mistakes:
  • Confusing vertical order with level order traversal
  • Thinking vertical order is preorder or postorder
  • Ignoring the horizontal distance concept
2. Which of the following C# code snippets correctly initializes a dictionary to store vertical order traversal results where keys are integers and values are lists of integers?
easy
A. var dict = new Dictionary();
B. var dict = new Dictionary();
C. var dict = new Dictionary();
D. var dict = new List>();

Solution

  1. Step 1: Identify the data structure needed

    We need a dictionary with integer keys (vertical columns) and list of integers as values (nodes in that column).
  2. Step 2: Match with C# syntax

    var dict = new Dictionary(); correctly declares Dictionary. Others have wrong types or collections.
  3. Final Answer:

    var dict = new Dictionary(); -> Option A
  4. Quick Check:

    Dictionary for vertical order [OK]
Hint: Use Dictionary for vertical columns and nodes [OK]
Common Mistakes:
  • Swapping key and value types
  • Using List instead of Dictionary for mapping
  • Incorrect generic type order
3. Given the following binary tree and C# code for vertical order traversal, what is the printed output?
    1
   / \
  2   3
 / \   \
4   5   6

// Code snippet:
var result = new Dictionary();
void Traverse(TreeNode node, int col) {
  if (node == null) return;
  if (!result.ContainsKey(col)) result[col] = new List<int>();
  result[col].Add(node.val);
  Traverse(node.left, col - 1);
  Traverse(node.right, col + 1);
}
Traverse(root, 0);
foreach (var col in result.OrderBy(k => k.Key)) {
  Console.Write(string.Join(",", col.Value) + " ");
}
medium
A. 4 2 1 5 3 6
B. 4,2 1,5,3 6
C. 4 2 1,5 3 6
D. 4,2 1 5,3 6

Solution

  1. Step 1: Assign columns to nodes

    Root 1 at col 0; 2 at -1; 3 at +1; 4 at -2; 5 at 0; 6 at +2.
  2. Step 2: Group nodes by column and order

    col -2: [4], col -1: [2], col 0: [1,5], col 1: [3], col 2: [6]. Printed as 4 2 1,5 3 6 (commas inside multi-node groups, spaces between columns).
  3. Final Answer:

    4 2 1,5 3 6 -> Option C
  4. Quick Check:

    Vertical groups with commas inside, spaces between [OK]
Hint: Track column indices and group nodes before printing [OK]
Common Mistakes:
  • Mixing node order inside columns
  • Printing without commas or spaces correctly
  • Ignoring column sorting
4. The following C# code attempts vertical order traversal but throws a runtime error. What is the main issue?
void Traverse(TreeNode node, int col, Dictionary dict) {
  if (node == null) return;
  dict[col].Add(node.val);
  Traverse(node.left, col - 1, dict);
  Traverse(node.right, col + 1, dict);
}

var dict = new Dictionary();
Traverse(root, 0, dict);
medium
A. Dictionary should use List<int> as key
B. Traverse method should return a value
C. Incorrect base case for recursion
D. Dictionary keys are not initialized before adding values

Solution

  1. Step 1: Analyze dictionary usage

    Code tries to add to dict[col] without checking if key col exists, causing KeyNotFoundException.
  2. Step 2: Fix by initializing keys

    Before adding, check if dict contains col; if not, create new List<int> for that key.
  3. Final Answer:

    Dictionary keys are not initialized before adding values -> Option D
  4. Quick Check:

    Initialize dictionary keys before adding [OK]
Hint: Always check and initialize dictionary keys before adding [OK]
Common Mistakes:
  • Assuming dictionary auto-creates keys
  • Ignoring null checks on dictionary values
  • Confusing recursion base case with dictionary errors
5. You want to perform vertical order traversal but also sort nodes by their depth (top to bottom) within each vertical column. Which data structure and approach is best in C#?
hard
A. Use a Dictionary> and sort each list by depth after traversal
B. Use a Dictionary and enqueue nodes as visited
C. Use a List<int> and sort by node value after traversal
D. Use a Dictionary and push nodes in preorder

Solution

  1. Step 1: Understand sorting by depth requirement

    We must store nodes with their depth info to sort them top to bottom within each vertical column.
  2. Step 2: Choose data structure and approach

    Dictionary with key as column and value as list of (depth, value) pairs allows sorting by depth after traversal.
  3. Final Answer:

    Use a Dictionary> and sort each list by depth after traversal -> Option A
  4. Quick Check:

    Store depth with nodes, then sort by depth [OK]
Hint: Store depth with nodes, then sort lists by depth per column [OK]
Common Mistakes:
  • Using queue or stack without depth info
  • Sorting by node value instead of depth
  • Ignoring depth when grouping nodes
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