4

networkXには、DiGraph()というツリーがあります。

#!/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() 

ツリーのノード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 に答える