深度优先搜索标签(Python)

时间:2013-06-07 08:33:29

标签: python networkx depth-first-search

我需要按照深度优先搜索期间访问节点的顺序标记树的节点。我必须在Python中实现它。我正在尝试使用networkx lib,但仍然不知道如何做到这一点。你们对如何使用它有什么想法吗?或者我应该尝试自己实现它?

干杯,GP

2 个答案:

答案 0 :(得分:2)

如果它们存在于库中,请尝试不要实现熟知的算法。你有一个基本遍历算法文档的链接。

http://networkx.github.io/documentation/latest/reference/algorithms.traversal.html

玩得开心:)

答案 1 :(得分:0)

好吧,如果您创建一个新图表,

>>> import networkx as nx

>>> g = nx.DiGraph()

你添加了一些边缘,

>>> g.add_edges_from([(0,1),(1,2),(0,3),(3,4),(3,5),(5,6)]) # etc

您可以使用dfs_edges()遍历并查看遍历的顺序。

>>> nodes = nx.dfs_edges(random_g, node_) # This creates an edges iterator
>>> nodes.next()
(0, 1)
>>> nodes.next()
(1, 2)
>>> nodes.next()
(0, 3)
>>>

如果你想要,你可以从调用.next()获取输出,以确定被访问的节点。

例如,(不包括第一个节点,0),

>>> for n in nodes:
...     print n[1]
... 
1
2
3
4
5
6
>>>