4

在networkX中,我有一棵树作为有向图()。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import networkx as nx
t = nx.DiGraph()
t.add_edge(1,'r')
t.add_edge(2,'r')
t.add_edge(3,'r')
t.add_edge(4,2)
t.add_edge(5,2)
t.add_edge(6,5)
print t.edges() 

如果 a 取树的节点 2。
我怎样才能得到 2 的子树?

编辑

我期待这个子树

[(4,2),(5,2),(6,5)]
4

1 回答 1

12

如果你的意思是根节点的子树2,那就是

from networkx.algorithms.traversal.depth_first_search import dfs_tree

subtree_at_2 = dfs_tree(t, 2)

编辑:看来您已经颠倒了边缘节点的顺序。在有向树中,所有路径都从根到叶,而不是相反。dfs_tree(t.reverse(), 2)为您提供所需的树,但请更改您的代码。

于 2011-10-25T17:45:16.570 回答