Python 此深度优先搜索变体是否有特定名称?

Python 此深度优先搜索变体是否有特定名称?,python,graph,networkx,graph-algorithm,depth-first-search,Python,Graph,Networkx,Graph Algorithm,Depth First Search,我使用下面的算法以特定顺序遍历(networkx)图。它类似于经典的深度优先搜索,不同之处在于更深的节点在其父节点之前被检索。出于好奇:有没有具体的名字来指代这种行为 导入networkx >>>def traverse_graph_dfs_like(图形,源): ... “”“从左下角开始的图形中产生节点”“” ... 堆栈=[] ... stack.append(源代码) ... 子_生成器={source:graph.neights(source)} ...

我使用下面的算法以特定顺序遍历(networkx)图。它类似于经典的深度优先搜索,不同之处在于更深的节点在其父节点之前被检索。出于好奇:有没有具体的名字来指代这种行为

导入networkx >>>def traverse_graph_dfs_like(图形,源): ... “”“从左下角开始的图形中产生节点”“” ... 堆栈=[] ... stack.append(源代码) ... 子_生成器={source:graph.neights(source)} ... 堆栈时: ... 尝试: ... first\u child=next(子\u生成器[堆栈[-1]]) ... 除停止迭代外: ... 屈服堆栈.pop() ... 其他: ... stack.append(第一个子项) ... 子对象生成器[第一子对象]=图.邻居(第一子对象) >>>g=networkx.有向图({0:[1,2],1:[3,4],2:[5,6]}) >>>列表(遍历图类(g,0)) [3, 4, 1, 5, 6, 2, 0] >>>列表(networkx.algorithms.dfs_树(g,0)) [0, 1, 3, 4, 2, 5, 6]
您希望使用深度优先搜索访问节点后订单。在这个方法中,通过递归调用post-order函数,从左到右遍历子树。一旦遍历了所有节点,就可以访问当前节点的数据部分。还有其他遍历树的方法(例如,按顺序、按顺序、按顺序反向等)。有关更多信息,请参阅维基百科页面

NetworkX确实提供了此算法的实现:。具体而言,它是深度优先搜索预排序中的节点生成器。以下是如何使用它:

from networkx import DiGraph
from networkx.algorithms.traversal.depth_first_search import dfs_postorder_nodes

g = DiGraph({0: [1, 2], 1: [3, 4], 2: [5, 6]})
print(*dfs_postorder_nodes(g, source=0))
打印输出正是您想要的:
3 4 1 5 6 2 0