[英]How to implement DFS by hand in networkx
我想在networkx中手动实现对树的简单DFS预先遍历。 作为一个玩具示例,这是一棵简单的树:
import matplotlib.pyplot as plt
import networkx as nx
T = nx.generators.balanced_tree(2, 3)
nx.draw_networkx(T)
plt.show()
由于这是一个二叉树,因此原则上我应该能够执行类似以下内容的预遍历:
def preOrder(root):
if root:
print(root.data)
preOrder(root.left)
preOrder(root.right)
但是,我看不到如何在networkx中执行此操作。 如何找到根以及node.left和node.right的networkx版本是什么?
在networkx中,存在list(nx.dfs_preorder_nodes(T, source=r, depth_limit=1))
,该树将树视为无向图,并从r
中将其视为根的所有子级找到。 我看不到如何使用它来模仿node.left和node.right来执行预遍历。 例如,如果r = 1
,它将给出[0,3,4]
。
Networkx允许您使用多种方式遍历图的节点。 在您的情况下,您可以使用dfs_preorder_nodes
并将深度限制为1
:
>>> G = nx.path_graph(5)
>>> list(nx.dfs_preorder_nodes(G, source=0))
[0, 1, 2, 3, 4]
>>> list(nx.dfs_preorder_nodes(G, source=0, depth_limit=1))
[0, 1]
注意API:
如果未指定来源,则将任意重复选择来源,直到搜索图中的所有组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.