What is an adjacency list in graph representation?
An adjacency list is a way to represent a graph where each node stores a list of its neighboring nodes. It saves space by only storing edges that exist.
Click to reveal answer
beginner
How does adjacency list compare to adjacency matrix in terms of space?
Adjacency lists use less space for sparse graphs because they only store existing edges, while adjacency matrices use space for all possible edges even if they don't exist.
Click to reveal answer
beginner
In Java, which data structure is commonly used to implement adjacency lists?
In Java, adjacency lists are often implemented using an array or list of lists, such as ArrayList, where each inner list holds neighbors of a node.
Click to reveal answer
intermediate
What is the time complexity to find all neighbors of a node using adjacency list?
The time complexity is O(k), where k is the number of neighbors of that node, because you only visit the connected nodes stored in the list.
Click to reveal answer
beginner
Why is adjacency list preferred for graphs with fewer edges?
Because adjacency lists only store existing edges, they save memory and are faster to iterate over neighbors when the graph has fewer edges compared to the total possible edges.
Click to reveal answer
Which data structure best represents an adjacency list in Java?
AHashMap of Integers
B2D Array (Matrix)
CArrayList of ArrayLists
DLinkedList of Integers
✗ Incorrect
An adjacency list is commonly implemented as an ArrayList of ArrayLists in Java, where each inner list holds neighbors.
What is the main advantage of adjacency list over adjacency matrix?
AUses less space for sparse graphs
BFaster to check if an edge exists
CSimpler to implement
DAlways uses less memory
✗ Incorrect
Adjacency lists use less space when the graph has fewer edges (sparse), unlike adjacency matrices which allocate space for all possible edges.
If a node has 5 neighbors, how long does it take to list all neighbors using adjacency list?
AO(1)
BO(5)
CO(n) where n is total nodes
DO(n^2)
✗ Incorrect
Listing neighbors takes time proportional to the number of neighbors, so O(5) in this case.
Which graph type benefits most from adjacency list representation?
ASparse graphs
BGraphs with no edges
CComplete graphs
DDense graphs
✗ Incorrect
Sparse graphs have fewer edges, so adjacency lists save space by storing only existing edges.
In adjacency list, what does each element in the main list represent?
AAn edge between two nodes
BA disconnected node
CA weight of an edge
DA node and its neighbors
✗ Incorrect
Each element corresponds to a node and contains a list of its neighbors.
Explain how adjacency list represents a graph and why it is efficient for sparse graphs.
Think about how edges are stored only when they exist.
You got /3 concepts.
Describe how you would implement an adjacency list in Java for a graph with 4 nodes.
Imagine a list where each position corresponds to a node.
You got /3 concepts.
Practice
(1/5)
1. What does an adjacency list represent in graph data structures?
easy
A. A list where each vertex stores a list of its adjacent vertices
B. A matrix showing connections between all pairs of vertices
C. A list of all edges without vertex connections
D. A list storing only isolated vertices
Solution
Step 1: Understand adjacency list concept
An adjacency list stores each vertex with a list of vertices it connects to directly.
Step 2: Compare with other graph representations
Unlike adjacency matrix, adjacency list focuses on neighbors per vertex, not all pairs.
Final Answer:
A list where each vertex stores a list of its adjacent vertices -> Option A
Quick Check:
Adjacency list = vertex with neighbors [OK]
Hint: Adjacency list = vertex + its neighbors list [OK]
Common Mistakes:
Confusing adjacency list with adjacency matrix
Thinking it stores edges only without vertices
Assuming it stores isolated vertices only
2. Which of the following is the correct Java syntax to declare an adjacency list for a graph with 5 vertices?
easy
A. ArrayList<Integer>[] graph = new ArrayList[5];
B. ArrayList<Integer> graph = new ArrayList(5);
C. List<Integer> graph = new List[5];
D. ArrayList[] graph = new ArrayList<Integer>(5);
Solution
Step 1: Understand adjacency list declaration
We need an array of ArrayLists, one for each vertex, so ArrayList<Integer>[] is correct.
Step 2: Check syntax correctness
ArrayList<Integer>[] graph = new ArrayList[5]; correctly declares an array of ArrayLists with size 5. Others misuse generics or types.
Final Answer:
ArrayList<Integer>[] graph = new ArrayList[5]; -> Option A
Quick Check:
Array of ArrayLists = ArrayList<Integer>[] graph = new ArrayList[5]; [OK]
Hint: Adjacency list = array of ArrayLists in Java [OK]
Common Mistakes:
Using List instead of ArrayList for array declaration
Trying to instantiate generic arrays directly
Missing generic type in ArrayList declaration
3. Given the following Java code snippet for an undirected graph adjacency list, what will be the output after adding edges?
ArrayList<Integer>[] graph = new ArrayList[3];
for (int i = 0; i < 3; i++) graph[i] = new ArrayList<>();
graph[0].add(1);
graph[1].add(0);
graph[1].add(2);
graph[2].add(1);
System.out.println(graph[1]);
medium
A. [0, 1]
B. [1, 2]
C. [2]
D. [0, 2]
Solution
Step 1: Trace additions to graph[1]
graph[1] adds 0 and 2, so its list contains [0, 2].
Step 2: Confirm output of System.out.println(graph[1])
Printing graph[1] shows the list [0, 2].
Final Answer:
[0, 2] -> Option D
Quick Check:
graph[1] = [0, 2] [OK]
Hint: Check which vertices are added to graph[1] list [OK]
Common Mistakes:
Confusing indices and values in adjacency list
Forgetting undirected edges require adding both ways
Misreading the printed list order
4. Identify the error in this Java code snippet that tries to create an adjacency list for a graph with 4 vertices:
ArrayList<Integer>[] graph = new ArrayList[4];
for (int i = 0; i <= 4; i++) {
graph[i] = new ArrayList<>();
}
medium
A. Missing generic type in ArrayList declaration
B. ArrayList cannot be used for adjacency list
C. Loop condition should be i < 4, not i <= 4
D. Array size should be 5 instead of 4
Solution
Step 1: Analyze loop range and array size
Array size is 4, valid indices are 0 to 3. Loop uses i <= 4, which accesses index 4 (out of bounds).
Step 2: Identify correct loop condition
Loop should run while i < 4 to avoid ArrayIndexOutOfBoundsException.
Final Answer:
Loop condition should be i < 4, not i <= 4 -> Option C
Quick Check:
Array indices 0 to 3, loop must use i < 4 [OK]
Hint: Array indices go from 0 to size-1 [OK]
Common Mistakes:
Using <= instead of < in loop condition
Assuming array size 4 means indices 0 to 4
Ignoring generic type warnings
5. You want to represent a weighted directed graph using adjacency lists in Java. Which data structure is best to store the edges for each vertex?
hard
A. ArrayList<Integer> storing only destination vertices
B. ArrayList> storing destination and weight
C. ArrayList storing all edges as lists
D. ArrayList<Boolean> storing if edge exists or not
Solution
Step 1: Understand weighted directed graph needs
Each edge has a destination vertex and a weight value, so both must be stored.
Step 2: Choose data structure to store pairs
Using ArrayList of Pair allows storing destination and weight together.
Step 3: Evaluate other options
ArrayList<Integer> storing only destination vertices stores only destination, missing weight; ArrayList storing all edges as lists is nested lists without clear pair; ArrayList<Boolean> storing if edge exists or not stores booleans, not weights.
Final Answer:
ArrayList> storing destination and weight -> Option B
Quick Check:
Weighted edges need destination + weight pairs [OK]
Hint: Store edges as pairs (destination, weight) in adjacency list [OK]
Common Mistakes:
Storing only destination without weight
Using nested lists without clear structure
Using booleans which can't hold weights
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.