带有networkX的子树

发布于 2024-12-12 00:36:13 字数 369 浏览 0 评论 0原文

在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() 

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

编辑

我期望这个子树

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

In networkX, I have a tree as 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() 

If a take the node 2 of tree.
how I can get the subtree of 2 ?

Edit

I expected this subtree

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如歌彻婉言 2024-12-19 00:36:13

如果您的意思是以节点 2 为根的子树,那就是

from networkx.algorithms.traversal.depth_first_search import dfs_tree

subtree_at_2 = dfs_tree(t, 2)

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

If you mean the subtree rooted at node 2, that's

from networkx.algorithms.traversal.depth_first_search import dfs_tree

subtree_at_2 = dfs_tree(t, 2)

Edit: it seems you've reversed the order of nodes in your edges. In a directed tree, all paths proceed from the root to a leaf, not the other way around. dfs_tree(t.reverse(), 2) gives you the tree that you want, but do change your code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文