BFS stands for Breadth First Search. It is a method to explore all nodes of a graph level by level, starting from a chosen node.
Click to reveal answer
beginner
In BFS, which data structure is primarily used to keep track of nodes to visit next?
A queue is used in BFS to keep track of nodes to visit next. It ensures nodes are explored in the order they are discovered.
Click to reveal answer
intermediate
What is the main difference between BFS and DFS in graph traversal?
BFS explores nodes level by level using a queue, while DFS explores as deep as possible along each branch using a stack or recursion.
Click to reveal answer
beginner
Why do we mark nodes as visited in BFS?
Marking nodes as visited prevents revisiting the same node multiple times, which avoids infinite loops and repeated work.
Click to reveal answer
intermediate
What is the time complexity of BFS on a graph with V vertices and E edges?
The time complexity of BFS is O(V + E), where V is the number of vertices and E is the number of edges, because each vertex and edge is processed once.
Click to reveal answer
Which data structure does BFS use to keep track of nodes to visit?
AQueue
BStack
CHashMap
DTree
✗ Incorrect
BFS uses a queue to explore nodes in the order they are discovered.
What is the first step in BFS starting from a node?
AMark all nodes as visited
BAdd all neighbors to the queue
CAdd the starting node to the queue and mark it visited
DRemove the starting node from the queue
✗ Incorrect
BFS begins by adding the starting node to the queue and marking it visited.
What happens when BFS visits a node's neighbor that is already visited?
AIt skips adding it to the queue again
BIt adds it again to the queue
CIt removes the neighbor from the graph
DIt restarts the BFS
✗ Incorrect
BFS skips neighbors already visited to avoid repeated processing.
Which of these is a correct BFS traversal order for a graph starting at node 1 with neighbors 2 and 3?
A3 -> 2 -> 1
B1 -> 3 -> 2
C2 -> 3 -> 1
D1 -> 2 -> 3
✗ Incorrect
BFS visits neighbors in the order they are discovered, so 1 then 2 then 3.
What is the space complexity of BFS in terms of vertices V?
AO(1)
BO(V)
CO(V^2)
DO(log V)
✗ Incorrect
BFS requires space proportional to the number of vertices to store the queue and visited set.
Explain how BFS works on a graph starting from a given node.
Think about how you explore neighbors one layer at a time.
You got /4 concepts.
Describe the differences between BFS and DFS in graph traversal.
Consider how each method chooses the next node to visit.
You got /4 concepts.
Practice
(1/5)
1. What does BFS (Breadth First Search) primarily use to keep track of nodes to visit next in a graph?
easy
A. A priority queue
B. A stack data structure
C. A queue data structure
D. A hash map
Solution
Step 1: Understand BFS traversal method
BFS explores nodes level by level, visiting all neighbors before moving deeper.
Step 2: Identify the data structure used
To maintain the order of visiting nodes level-wise, BFS uses a queue which follows FIFO (First In First Out).
Final Answer:
A queue data structure -> Option C
Quick Check:
BFS uses queue = A [OK]
Hint: BFS uses FIFO order, so it needs a queue [OK]
Common Mistakes:
Confusing BFS with DFS which uses a stack
Thinking BFS uses a priority queue
Assuming BFS uses a hash map to order nodes
2. Which of the following is the correct Java syntax to add a node to the BFS queue named queue?
easy
A. queue.push(node);
B. queue.add(node);
C. queue.enqueue(node);
D. queue.insert(node);
Solution
Step 1: Identify Java Queue method to add elements
Java's Queue interface uses add() or offer() to insert elements.
Step 2: Match given options with Java syntax
push() is for stacks, enqueue() and insert() are not standard Queue methods in Java.
Final Answer:
queue.add(node); -> Option B
Quick Check:
Java Queue add method = add() [OK]
Hint: Java Queue uses add() to insert elements [OK]
Common Mistakes:
Using push() which is for stacks
Using enqueue() which is not a Java Queue method
Using insert() which does not exist for Queue
3. Consider the following Java code snippet for BFS on a graph starting from node 0:
import java.util.*;
public class GraphBFS {
public static void bfs(int start, Map graph) {
Queue<Integer> queue = new LinkedList<>();
Set<Integer> visited = new HashSet<>();
queue.add(start);
visited.add(start);
while (!queue.isEmpty()) {
int node = queue.poll();
System.out.print(node + " ");
for (int neighbor : graph.getOrDefault(node, new ArrayList<>())) {
if (!visited.contains(neighbor)) {
queue.add(neighbor);
visited.add(neighbor);
}
}
}
}
public static void main(String[] args) {
Map graph = new HashMap<>();
graph.put(0, Arrays.asList(1, 2));
graph.put(1, Arrays.asList(2));
graph.put(2, Arrays.asList(0, 3));
graph.put(3, Arrays.asList(3));
bfs(0, graph);
}
}
What is the output printed by this program?
medium
A. 0 1 2 3
B. 0 2 1 3
C. 0 1 3 2
D. 0 3 2 1
Solution
Step 1: Start BFS from node 0 and enqueue neighbors
Start with queue=[0], visited={0}. Dequeue 0, print 0. Enqueue neighbors 1 and 2, visited={0,1,2}.
Step 2: Dequeue next nodes and enqueue their neighbors
Hint: Follow queue order and mark visited nodes [OK]
Common Mistakes:
Visiting nodes out of BFS order
Not marking visited nodes causing repeats
Confusing BFS with DFS order
4. The following BFS code snippet has a bug. What is the error?
Queue<Integer> queue = new LinkedList<>();
Set<Integer> visited = new HashSet<>();
queue.add(start);
while (!queue.isEmpty()) {
int node = queue.poll();
System.out.print(node + " ");
for (int neighbor : graph.get(node)) {
if (!visited.contains(neighbor)) {
queue.add(neighbor);
}
}
}
medium
A. Using poll() instead of peek() on queue
B. Not initializing the queue
C. Not checking if queue is empty before polling
D. Missing adding start node to visited set
Solution
Step 1: Check visited set usage
The code adds neighbors to queue only if not visited, but never adds nodes to visited set after enqueueing.
Step 2: Identify missing visited addition for start node
Start node is added to queue but not to visited set, so it may be revisited or cause infinite loops.
Final Answer:
Missing adding start node to visited set -> Option D
Quick Check:
Visited set must include start node [OK]
Hint: Always add nodes to visited when enqueued [OK]
Common Mistakes:
Forgetting to add start node to visited
Adding to visited only after dequeueing
Using peek() instead of poll() incorrectly
5. You want to find the shortest path length from node 0 to node 4 in an unweighted graph using BFS. Which modification to the BFS algorithm below will correctly compute the shortest distance?
Queue<Integer> queue = new LinkedList<>();
Set<Integer> visited = new HashSet<>();
Map distance = new HashMap<>();
queue.add(0);
visited.add(0);
distance.put(0, 0);
while (!queue.isEmpty()) {
int node = queue.poll();
for (int neighbor : graph.getOrDefault(node, new ArrayList<>())) {
if (!visited.contains(neighbor)) {
queue.add(neighbor);
visited.add(neighbor);
// What to add here?
}
}
}
System.out.println(distance.getOrDefault(4, -1));
hard
A. distance.put(neighbor, distance.get(node) + 1);
B. distance.put(neighbor, distance.get(neighbor) + 1);
C. distance.put(neighbor, 1);
D. distance.put(neighbor, distance.get(node));
Solution
Step 1: Understand BFS for shortest path in unweighted graph
BFS visits nodes in order of increasing distance from start. Distance to neighbor = distance to current node + 1.
Step 2: Assign correct distance value when visiting neighbor
Set neighbor's distance as current node's distance + 1 to reflect shortest path length.
Final Answer:
distance.put(neighbor, distance.get(node) + 1); -> Option A
Quick Check:
Neighbor distance = current + 1 [OK]
Hint: Distance to neighbor = current node distance + 1 [OK]
Common Mistakes:
Using neighbor's old distance instead of current node's
Setting distance always to 1 ignoring path length
Not updating distance map at all
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.