Note

This documents the development version of NetworkX. Documentation for the current release can be found here.

networkx.algorithms.traversal.breadth_first_search.bfs_successors

bfs_successors(G, source, depth_limit=None, sort_neighbors=None)[source]

Returns an iterator of successors in breadth-first-search from source.

Parameters
  • G (NetworkX graph)

  • source (node) – Specify starting node for breadth-first search

  • depth_limit (int, optional(default=len(G))) – Specify the maximum search depth

  • sort_neighbors (function) – A function that takes the list of neighbors of given node as input, and returns an iterator over these neighbors but with custom ordering.

Returns

succ – (node, successors) iterator where successors is the list of successors of the node.

Return type

iterator

Examples

>>> G = nx.path_graph(3)
>>> print(dict(nx.bfs_successors(G, 0)))
{0: [1], 1: [2]}
>>> H = nx.Graph()
>>> H.add_edges_from([(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)])
>>> print(dict(nx.bfs_successors(H, 0)))
{0: [1, 2], 1: [3, 4], 2: [5, 6]}
>>> G = nx.Graph()
>>> nx.add_path(G, [0, 1, 2, 3, 4, 5, 6])
>>> nx.add_path(G, [2, 7, 8, 9, 10])
>>> print(dict(nx.bfs_successors(G, source=1, depth_limit=3)))
{1: [0, 2], 2: [3, 7], 3: [4], 7: [8]}

Notes

Based on http://www.ics.uci.edu/~eppstein/PADS/BFS.py by D. Eppstein, July 2004.The modifications to allow depth limits based on the Wikipedia article “Depth-limited-search”.

See also

bfs_tree(), bfs_edges(), edge_bfs()