NetworkX 递归子节点

4
使用最新的NetworkX(在撰写本文时为版本1.11),检索给定节点的所有(递归)子节点的最有效方法是什么?
successors()函数可检索直接子级,在以前的版本中存在dfs_preorder_nodes solution

1
dfs_preorder_nodes 函数有什么问题? - Joel
啊,我的错!我只能找到之前版本的内容,直到现在。不知道为什么以为最新版本有类和基于类的方法。干杯! - dter
2个回答

4

有一个 descendants 方法,它可以找到所有子节点,包括每个子节点的子节点:

1-2
 \
  3
   \
    4
import networkx as nx

G = nx.DiGraph()
G.add_edge(1, 2)
G.add_edge(1, 3)
G.add_edge(2, 4)
res = nx.descendants(G, 1)
print (res) #{2,3,4}

0

如Joel所指出的那样,dfs_preorder_nodes在最新版本中仍然有效。文档可以在这里找到。

以下代码实现了所需功能,即获取感兴趣节点的所有递归子节点:

import networkx as nx 
children = [node for node in nx.dfs_preorder_nodes(network, queryID)]`

2
你也可以执行 children = list(nx.dfs...) 将生成器转换为列表。 - Joel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接