#

Note

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

#

networkx.algorithms.traversal.breadth_first_search.bfs_tree

bfs_tree(G, source, reverse=False, depth_limit=None, sort_neighbors=None)[source]

Returns an oriented tree constructed from of a breadth-first-search starting at source.

Parameters
  • G (NetworkX graph)

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

  • reverse (bool, optional) – If True traverse a directed graph in the reverse direction

  • 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

T – An oriented tree

Return type

NetworkX DiGraph

Examples

>>> G = nx.path_graph(3)
>>> print(list(nx.bfs_tree(G, 1).edges()))
[(1, 0), (1, 2)]
>>> H = nx.Graph()
>>> nx.add_path(H, [0, 1, 2, 3, 4, 5, 6])
>>> nx.add_path(H, [2, 7, 8, 9, 10])
>>> print(sorted(list(nx.bfs_tree(H, source=3, depth_limit=3).edges())))
[(1, 0), (2, 1), (2, 7), (3, 2), (3, 4), (4, 5), (5, 6), (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

dfs_tree(), bfs_edges(), edge_bfs()