Bird
Raised Fist0
DSA Pythonprogramming~20 mins

Adjacency List Representation in DSA Python - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Adjacency List Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of adjacency list after adding edges
What is the printed adjacency list after running the following code?
DSA Python
graph = {0: [], 1: [], 2: [], 3: []}
graph[0].append(1)
graph[0].append(2)
graph[1].append(2)
graph[2].append(0)
graph[2].append(3)
print(graph)
A{"0": [1, 2], "1": [2], "2": [0, 3], "3": []}
B{0: [1, 2], 1: [2], 2: [3, 0], 3: []}
C{0: [1, 2], 1: [2], 2: [0, 3], 3: []}
D{0: [2, 1], 1: [2], 2: [0, 3], 3: []}
Attempts:
2 left
💡 Hint
Remember that append adds elements at the end of the list in the order they are called.
🧠 Conceptual
intermediate
1:30remaining
Number of edges in an undirected graph adjacency list
If an undirected graph has the adjacency list below, how many edges does the graph have? graph = {0: [1, 2], 1: [0, 2], 2: [0, 1, 3], 3: [2]}
A5
B4
C6
D7
Attempts:
2 left
💡 Hint
In an undirected graph, each edge appears twice in the adjacency list.
🔧 Debug
advanced
1:30remaining
Identify the error in adjacency list creation
What error will this code produce when run? nodes = 3 graph = [[]] * nodes graph[0].append(1) print(graph)
AOutput: [[1], [1], [1]]
BOutput: [[1], [], []]
CTypeError: 'int' object is not callable
DIndexError: list index out of range
Attempts:
2 left
💡 Hint
Check how list multiplication affects nested lists.
❓ Predict Output
advanced
1:30remaining
Output after removing an edge from adjacency list
What is the adjacency list after removing edge 2->3 from the graph below? graph = {0: [1, 2], 1: [2], 2: [0, 3], 3: []} graph[2].remove(3) print(graph)
A{0: [1, 2], 1: [2], 2: [0], 3: []}
B{0: [1, 2], 1: [2], 2: [3], 3: []}
C{0: [1, 2], 1: [2], 2: [], 3: []}
DValueError: list.remove(x): x not in list
Attempts:
2 left
💡 Hint
The remove method deletes the first occurrence of the value.
🚀 Application
expert
2:30remaining
Find if a path exists using adjacency list
Given the adjacency list below, which option correctly returns True if there is a path from node 0 to node 3 using depth-first search (DFS)?
DSA Python
graph = {0: [1, 2], 1: [2], 2: [3], 3: []}
visited = set()
def dfs(node):
    if node == 3:
        return True
    visited.add(node)
    for neighbor in graph[node]:
        if neighbor not in visited:
            if dfs(neighbor):
                return True
    return False
result = dfs(0)
print(result)
AFalse
BNone
CKeyError
DTrue
Attempts:
2 left
💡 Hint
DFS explores neighbors recursively and returns True when target is found.

Practice

(1/5)
1. What does an adjacency list represent in graph data structures?
easy
A. A list of all nodes without connections
B. A matrix showing distances between nodes
C. A list of nodes sorted by their values
D. A list where each node stores its connected neighbors

Solution

  1. Step 1: Understand adjacency list concept

    An adjacency list stores each node with a list of nodes it connects to directly.
  2. Step 2: Compare options with definition

    Only A list where each node stores its connected neighbors correctly describes this structure as neighbors stored per node.
  3. Final Answer:

    A list where each node stores its connected neighbors -> Option D
  4. Quick Check:

    Adjacency list = neighbors per node [OK]
Hint: Adjacency list = nodes with their direct neighbors [OK]
Common Mistakes:
  • Confusing adjacency list with adjacency matrix
  • Thinking it stores distances instead of neighbors
  • Assuming it lists nodes without connections
2. Which of the following is the correct Python syntax to initialize an empty adjacency list for a graph with 3 nodes?
easy
A. graph = {0: [], 1: [], 2: []}
B. graph = [[], [], []]
C. graph = {0: None, 1: None, 2: None}
D. graph = [0, 1, 2]

Solution

  1. Step 1: Understand adjacency list initialization

    An adjacency list is usually a dictionary with keys as nodes and values as lists of neighbors.
  2. Step 2: Check each option

    graph = {0: [], 1: [], 2: []} correctly creates a dict with empty lists for each node. graph = [[], [], []] is a list of lists but lacks node keys. graph = {0: None, 1: None, 2: None} uses None instead of lists. graph = [0, 1, 2] is just a list of nodes, not adjacency lists.
  3. Final Answer:

    graph = {0: [], 1: [], 2: []} -> Option A
  4. Quick Check:

    Dict with empty lists = adjacency list init [OK]
Hint: Use dict with nodes as keys and empty lists as values [OK]
Common Mistakes:
  • Using None instead of empty lists for neighbors
  • Using list without node keys
  • Confusing adjacency list with simple node list
3. What is the output of the following code?
graph = {0: [1, 2], 1: [2], 2: [0, 3], 3: []}
print(graph[2])
medium
A. [1, 2]
B. [0, 3]
C. [2]
D. []

Solution

  1. Step 1: Identify the adjacency list for node 2

    In the dictionary, key 2 maps to the list [0, 3].
  2. Step 2: Print the value for key 2

    Printing graph[2] outputs [0, 3].
  3. Final Answer:

    [0, 3] -> Option B
  4. Quick Check:

    graph[2] = [0, 3] [OK]
Hint: Look up the key in dict to get neighbors list [OK]
Common Mistakes:
  • Confusing keys and values
  • Printing wrong node's neighbors
  • Misreading list contents
4. The following code tries to add an edge from node 1 to node 3 in the adjacency list but causes an error. What is the error?
graph = {0: [1], 1: [2], 2: [0]}
graph[1].append(3)
print(graph)
medium
A. KeyError because node 3 does not exist in graph
B. IndexError because list index out of range
C. No error, code runs correctly
D. TypeError because append is used on a dict

Solution

  1. Step 1: Check if node 1 exists in graph

    Node 1 is a key in graph with value [2], so graph[1] is a list.
  2. Step 2: Append 3 to graph[1]

    Appending 3 to the list [2] is valid and updates graph[1] to [2, 3].
  3. Final Answer:

    No error, code runs correctly -> Option C
  4. Quick Check:

    Appending to list in dict value works [OK]
Hint: Appending to existing list key is valid, no error [OK]
Common Mistakes:
  • Thinking node 3 must exist as key before adding
  • Confusing append on list vs dict
  • Expecting error when adding new neighbor
5. Given a graph represented by the adjacency list:
graph = {0: [1, 2], 1: [2], 2: [0], 3: [2]}

Which node(s) have no outgoing edges?
hard
A. None, all have outgoing edges
B. Node 1
C. Node 2
D. Node 3

Solution

  1. Step 1: Check neighbors list for each node

    Node 0 connects to [1, 2], node 1 to [2], node 2 to [0], node 3 to [2].
  2. Step 2: Identify nodes with empty neighbor lists

    Node 3 has neighbors [2], so it has outgoing edges. No node has an empty list, so none have no outgoing edges.
  3. Final Answer:

    None, all have outgoing edges -> Option A
  4. Quick Check:

    All adjacency lists non-empty = no node without edges [OK]
Hint: Check for empty neighbor lists to find no outgoing edges [OK]
Common Mistakes:
  • Assuming node 3 has no edges because it appears last
  • Confusing incoming edges with outgoing edges
  • Ignoring non-empty lists
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