Bird
Raised Fist0
DSA C#programming~10 mins

Why Graphs Exist and What Trees Cannot Model in DSA C# - Test Your Knowledge

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

Complete the code to declare a graph using adjacency list representation.

DSA C#
Dictionary<int, List<int>> graph = new Dictionary<int, List<int>>();
graph.Add(1, new List<int> { [1] });
Drag options to blanks, or click blank then click option'
A2, 3
B3
C2
D4
Attempts:
3 left
💡 Hint
Common Mistakes
Adding multiple nodes without commas inside the List constructor.
Using parentheses instead of braces for List initialization.
2fill in blank
medium

Complete the code to add an edge between two nodes in an undirected graph.

DSA C#
void AddEdge(Dictionary<int, List<int>> graph, int u, int v) {
    graph[u].Add([1]);
    graph[v].Add(u);
}
Drag options to blanks, or click blank then click option'
Au
BAdd
Cgraph
Dv
Attempts:
3 left
💡 Hint
Common Mistakes
Adding u to u's adjacency list instead of v.
Using incorrect variable names.
3fill in blank
hard

Fix the error in the code that tries to check if a graph contains a cycle.

DSA C#
bool HasCycle(int node, int parent, Dictionary<int, List<int>> graph, HashSet<int> visited) {
    visited.Add(node);
    foreach (var neighbor in graph[node]) {
        if (!visited.Contains(neighbor)) {
            if (HasCycle(neighbor, node, graph, visited)) return true;
        } else if (neighbor != [1]) {
            return true;
        }
    }
    return false;
}
Drag options to blanks, or click blank then click option'
Anode
Bparent
Cvisited
Dgraph
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing neighbor to node instead of parent.
Not checking for cycles properly.
4fill in blank
hard

Fill both blanks to create a graph that models a social network where users can be friends with multiple users.

DSA C#
var socialGraph = new Dictionary<string, List<string>>();
socialGraph["Alice"] = new List<string> { [1] };
socialGraph["Bob"] = new List<string> { [2] };
Drag options to blanks, or click blank then click option'
A"Bob", "Charlie"
B"Alice"
C"Alice", "David"
D"Charlie"
Attempts:
3 left
💡 Hint
Common Mistakes
Using single names instead of lists.
Not matching friend names correctly.
5fill in blank
hard

Fill all three blanks to create a graph that models a road network with weighted edges.

DSA C#
var roadGraph = new Dictionary<string, List<(string, int)>>();
roadGraph["CityA"] = new List<(string, int)> { ([1], [2]) };
roadGraph["CityB"] = new List<(string, int)> { ([3], 10) };
Drag options to blanks, or click blank then click option'
A"CityB"
B5
C"CityA"
D15
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing city names and weights in wrong order.
Using incorrect tuple syntax.

Practice

(1/5)
1. Why do we need graphs when we already have trees in data structures?
easy
A. Because graphs can model relationships where nodes have multiple connections, unlike trees.
B. Because trees are faster to traverse than graphs.
C. Because graphs use less memory than trees.
D. Because trees cannot store any data.

Solution

  1. Step 1: Understand tree structure limitations

    Trees have a strict hierarchy where each node has only one parent, so they cannot represent multiple connections between nodes.
  2. Step 2: Understand graph capabilities

    Graphs allow nodes to connect to multiple other nodes without hierarchy, modeling complex relationships like social networks or maps.
  3. Final Answer:

    Because graphs can model relationships where nodes have multiple connections, unlike trees. -> Option A
  4. Quick Check:

    Graphs model multiple connections [OK]
Hint: Graphs allow many connections per node; trees do not. [OK]
Common Mistakes:
  • Thinking trees can have multiple parents per node
  • Confusing memory use between trees and graphs
  • Assuming trees cannot store data
2. Which of the following is the correct way to declare an adjacency list for a graph in C#?
easy
A. Dictionary graph = new Dictionary();
B. List<int> graph = new List<int>();
C. int[] graph = new int[10];
D. Dictionary graph = new Dictionary();

Solution

  1. Step 1: Identify adjacency list structure

    An adjacency list maps each node (int) to a list of connected nodes (List<int>), so Dictionary is suitable.
  2. Step 2: Check other options

    List<int> alone cannot map nodes to neighbors; int[] is a fixed array, not a map; Dictionary maps to single int, not list.
  3. Final Answer:

    Dictionary graph = new Dictionary(); -> Option D
  4. Quick Check:

    Adjacency list = Dictionary with List values [OK]
Hint: Adjacency list uses Dictionary with List values. [OK]
Common Mistakes:
  • Using List<int> without mapping keys
  • Using Dictionary instead of List<int>
  • Using fixed-size arrays for adjacency
3. What will be the output of the following C# code snippet modeling a graph?
var graph = new Dictionary();
graph[1] = new List<int> {2, 3};
graph[2] = new List<int> {1};
graph[3] = new List<int> {1, 4};
graph[4] = new List<int> {3};

foreach(var node in graph)
{
    Console.Write(node.Key + ": ");
    foreach(var neighbor in node.Value)
        Console.Write(neighbor + " ");
    Console.WriteLine();
}
medium
A. 1: 2 3 2: 1 3: 4 4: 3
B. 1: 1 2 3 4 2: 1 3: 1 4 4: 3
C. 1: 2 3 2: 1 3: 1 4 4: 3
D. 1: 2 3 2: 3 3: 1 4 4: 3

Solution

  1. Step 1: Understand graph dictionary entries

    Node 1 connects to 2 and 3; node 2 connects to 1; node 3 connects to 1 and 4; node 4 connects to 3.
  2. Step 2: Trace the output loop

    For each node, print key and neighbors exactly as stored, matching 1: 2 3 2: 1 3: 1 4 4: 3 's output.
  3. Final Answer:

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

    Print adjacency list as stored [OK]
Hint: Print dictionary keys and their neighbor lists exactly. [OK]
Common Mistakes:
  • Mixing neighbors between nodes
  • Printing extra or missing neighbors
  • Confusing order of neighbors
4. Identify the error in this C# code snippet that tries to add edges to a graph:
var graph = new Dictionary();
graph[1].Add(2);
graph[2] = new List<int> {1};
medium
A. graph[2] should be initialized before adding elements.
B. graph[1] is used before initializing its list, causing a runtime error.
C. Dictionary keys must be strings, not integers.
D. List<int> cannot be used as dictionary values.

Solution

  1. Step 1: Check initialization of graph[1]

    graph[1] is accessed to add an element before assigning a List<int>, causing a NullReferenceException.
  2. Step 2: Verify other lines

    graph[2] is correctly initialized before use; dictionary keys can be int; List<int> is valid value type.
  3. Final Answer:

    graph[1] is used before initializing its list, causing a runtime error. -> Option B
  4. Quick Check:

    Accessing uninitialized dictionary entry [OK]
Hint: Initialize list before adding to dictionary key. [OK]
Common Mistakes:
  • Assuming dictionary keys must be strings
  • Ignoring null initialization errors
  • Confusing dictionary value types
5. You want to model a city map where intersections connect to multiple roads, including loops and two-way streets. Which data structure best models this, and why can't a tree be used here?
hard
A. Use a graph because it supports cycles and multiple connections; trees cannot model loops.
B. Use a tree because it is simpler and supports multiple parents per node.
C. Use an array because it stores all intersections linearly.
D. Use a linked list because it models one-way streets well.

Solution

  1. Step 1: Analyze city map requirements

    City intersections connect to multiple roads, including loops and two-way streets, needing multiple connections and cycles.
  2. Step 2: Compare tree and graph capabilities

    Trees cannot represent cycles or multiple parents; graphs support cycles and multiple edges between nodes.
  3. Final Answer:

    Use a graph because it supports cycles and multiple connections; trees cannot model loops. -> Option A
  4. Quick Check:

    City map needs cycles = graph [OK]
Hint: Graphs model cycles and multiple connections; trees do not. [OK]
Common Mistakes:
  • Thinking trees allow cycles
  • Choosing linear structures for complex maps
  • Confusing linked lists with graphs
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