Source code for bfs

from collections import deque
from itertools import takewhile

[docs]def breadth_first_kernel(graph, start): """ Breadth first iterator over graph. Yields subseqent node identifiers from graph without repetitions. :param graph: Adjacency list of graph :param start: Start node identifier """ queue = deque([start]) visited = {start} while len(queue): source = queue.popleft() yield source for target in graph.get(source, []): if target not in visited: visited.add(target) queue.append(target)