What does BFS stand for and what is its main use in graphs?
BFS stands for Breadth-First Search. It is mainly used to explore nodes level by level and find the shortest path in an unweighted graph.
Click to reveal answer
beginner
Why is BFS suitable for finding the shortest path in an unweighted graph?
Because BFS explores neighbors level by level, the first time it reaches the destination node, it has found the shortest path in terms of number of edges.
Click to reveal answer
beginner
In BFS for shortest path, what data structure is commonly used to keep track of nodes to visit next?
A queue is used to keep track of nodes to visit next, ensuring nodes are processed in the order they are discovered.
Click to reveal answer
intermediate
What additional information do we store during BFS to reconstruct the shortest path?
We store the parent or predecessor of each node visited, so after reaching the destination, we can backtrack to the start node to reconstruct the path.
Click to reveal answer
intermediate
What is the time complexity of BFS when finding the shortest path in an unweighted graph?
The time complexity is O(V + E), where V is the number of vertices and E is the number of edges, because each node and edge is processed once.
Click to reveal answer
What data structure does BFS use to explore nodes in an unweighted graph?
AHash Map
BStack
CPriority Queue
DQueue
✗ Incorrect
BFS uses a queue to explore nodes level by level.
Why does BFS find the shortest path in an unweighted graph?
AIt uses weights to calculate shortest distance
BIt explores nodes in order of increasing distance from the start
CIt explores nodes randomly
DIt uses recursion to find paths
✗ Incorrect
BFS explores nodes level by level, so the first time it reaches a node, it is via the shortest path.
What extra information is needed to reconstruct the shortest path after BFS completes?
ANumber of edges in graph
BDistance from start only
CParent of each node
DVisited nodes count
✗ Incorrect
Storing the parent of each node allows backtracking to reconstruct the path.
What is the time complexity of BFS in terms of vertices (V) and edges (E)?
AO(V + E)
BO(V^2)
CO(E^2)
DO(log V)
✗ Incorrect
BFS visits each vertex and edge once, so complexity is O(V + E).
Which of these graphs is BFS NOT guaranteed to find the shortest path in?
AWeighted graph with different weights
BUnweighted graph
CWeighted graph with equal weights
DUndirected graph
✗ Incorrect
BFS does not consider edge weights, so it may not find shortest paths in weighted graphs with different weights.
Explain how BFS can be used to find the shortest path in an unweighted graph.
Think about how BFS explores neighbors and how to remember the path.
You got /5 concepts.
Describe the steps to reconstruct the shortest path after BFS completes.
How do you trace back from the end to the start?
You got /4 concepts.
Practice
(1/5)
1. What does BFS (Breadth-First Search) help find in an unweighted graph?
easy
A. The shortest path from a start node to all other nodes
B. The node with the highest degree
C. The longest path between two nodes
D. The total number of edges in the graph
Solution
Step 1: Understand BFS traversal
BFS explores nodes level by level starting from the source node, visiting all neighbors before moving deeper.
Step 2: BFS finds shortest paths in unweighted graphs
Because BFS visits nodes in order of increasing distance, the first time it reaches a node is via the shortest path.
Final Answer:
The shortest path from a start node to all other nodes -> Option A
Quick Check:
BFS = shortest path in unweighted graph [OK]
Hint: BFS visits nodes by distance layers to find shortest paths [OK]
Common Mistakes:
Confusing BFS with DFS for shortest path
Thinking BFS finds longest path
Assuming BFS works only for weighted graphs
2. Which Java data structure is commonly used to implement BFS for shortest path in an unweighted graph?
easy
A. Queue
B. PriorityQueue
C. HashMap
D. Stack
Solution
Step 1: Recall BFS traversal order
BFS explores nodes in a first-in, first-out order to visit neighbors level by level.
Step 2: Identify the correct data structure
A Queue supports FIFO order, making it ideal for BFS traversal.
Final Answer:
Queue -> Option A
Quick Check:
BFS uses Queue for level order traversal [OK]
Hint: Use Queue for FIFO order in BFS traversal [OK]
Common Mistakes:
Using Stack which is LIFO and suits DFS
Confusing PriorityQueue with Queue
Using HashMap which stores key-value pairs, not order
3. What is the output distance array after running BFS from node 0 on this graph?
Graph edges:
0 - 1
0 - 2
1 - 3
2 - 3
3 - 4
Assume nodes are 0 to 4 and distance to start node is 0.
medium
A. [0, 0, 0, 0, 0]
B. [0, 1, 2, 3, 4]
C. [0, 1, 1, 1, 2]
D. [0, 1, 1, 2, 3]
Solution
Step 1: Start BFS from node 0 and set distance 0
Distance[0] = 0. Neighbors 1 and 2 get distance 1.
Step 2: Visit neighbors of 1 and 2
Node 3 is neighbor of both 1 and 2, first reached at distance 2.
Step 3: Visit neighbor of 3
Node 4 is neighbor of 3, distance is 3.
Final Answer:
[0, 1, 1, 2, 3] -> Option D
Quick Check:
Distances increase by 1 per BFS level [OK]
Hint: Distance increments by 1 each BFS layer from start [OK]
Common Mistakes:
Assigning wrong distances to node 3
Confusing BFS with DFS distances
Setting all distances to zero
4. Identify the error in this BFS code snippet for shortest path:
int[] dist = new int[n];
Arrays.fill(dist, Integer.MAX_VALUE);
Queue<Integer> q = new LinkedList<>();
q.add(start);
dist[start] = 0;
while(!q.isEmpty()) {
int u = q.poll();
for(int v : graph.get(u)) {
if(dist[v] == 0) {
dist[v] = dist[u] + 1;
q.add(v);
}
}
}
medium
A. The queue should be a Stack for BFS
B. Distance array should be initialized with zeros
C. The condition 'dist[v] == 0' should check for Integer.MAX_VALUE instead
D. The start node distance should be Integer.MAX_VALUE
Solution
Step 1: Understand distance initialization
Distances are set to Integer.MAX_VALUE to mark unvisited nodes.
Step 2: Check visitation condition
Condition 'dist[v] == 0' wrongly checks for zero, but unvisited nodes have Integer.MAX_VALUE.
Step 3: Correct condition
Change condition to 'dist[v] == Integer.MAX_VALUE' to detect unvisited nodes properly.
Final Answer:
The condition 'dist[v] == 0' should check for Integer.MAX_VALUE instead -> Option C
Quick Check:
Check unvisited nodes by Integer.MAX_VALUE [OK]
Hint: Check unvisited nodes by initial max distance, not zero [OK]
Common Mistakes:
Using zero to check unvisited nodes when distances initialized to max
Using Stack instead of Queue for BFS
Incorrect distance initialization
5. Given an unweighted graph with nodes 0 to 5 and edges:
0-1, 0-2, 1-3, 2-3, 3-4, 4-5
If BFS starts at node 0, what is the shortest path from node 0 to node 5?
hard
A. [0, 1, 2, 3, 4, 5]
B. [0, 1, 3, 4, 5]
C. [0, 2, 3, 5]
D. [0, 2, 4, 5]
Solution
Step 1: Run BFS to find shortest distances
Distances: 0->0, 1->1, 2->1, 3->2, 4->3, 5->4.
Step 2: Trace shortest path from 5 back to 0
From 5 to 4, 4 to 3, 3 to 1 or 2, choose 1 for shortest path: 0->1->3->4->5.
Final Answer:
[0, 1, 3, 4, 5] -> Option B
Quick Check:
Shortest path follows BFS layers [OK]
Hint: Trace path backward from target using distances [OK]
Common Mistakes:
Choosing longer paths ignoring BFS distances
Skipping nodes in path
Confusing BFS with DFS path
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.