Skip to main content
`Ctrl`+`K`

# bfs_successors

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

  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 (default=None)

      A function that takes an iterator over nodes as the input, and returns an iterable of the same nodes with a custom ordering. For example, `sorted` will sort the nodes in increasing order.

  Returns:
    succ: iterator

      (node, successors) iterator where `successors` is the non-empty list of successors of `node` in a breadth first search from `source`. To appear in the iterator, `node` must have successors.

  See also

  `bfs_tree`
  `bfs_edges`
  `edge_bfs`

  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”.

  Examples

      >>> G = nx.path_graph(3)
      >>> 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)])
      >>> 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])
      >>> dict(nx.bfs_successors(G, source=1, depth_limit=3))
      {1: [0, 2], 2: [3, 7], 3: [4], 7: [8]}
      >>> G = nx.DiGraph()
      >>> nx.add_path(G, [0, 1, 2, 3, 4, 5])
      >>> dict(nx.bfs_successors(G, source=3))
      {3: [4], 4: [5]}