The queue is key
BFS uses a FIFO queue. Dequeue, visit, enqueue unvisited neighbors. Levels emerge naturally.
Advertisement
The queue is key
BFS uses a FIFO queue. Dequeue, visit, enqueue unvisited neighbors. Levels emerge naturally.
Advertisement
Java template
Queue q = new LinkedList<>();
Set visited = new HashSet<>();
q.offer(start);
visited.add(start);
while (!q.isEmpty()) {
Node cur = q.poll();
process(cur);
for (Node next : cur.neighbors)
if (visited.add(next)) q.offer(next);
} Shortest path (unweighted)
Distance to any node = level number. BFS gives shortest path in edges (not weights).
Multi-source BFS
Start with multiple sources in the queue. Every reachable node's distance = min over sources.