python networkx:获取从root到leaf的所有简单路径的简单方法

时间:2018-01-04 00:16:59

标签: python networkx

我根据有向图构建了一棵树。源数据是SQL表中的一系列父子关系。它保证是一棵树(无论如何我都会验证它)。 我想要从根到每个叶子的一组简单路径。这些数据是会计和会计科目表中的标题",路径看起来像" Root - >资产 - >流动资产 - >应收账款 - >贸易债务人" 贸易债务人'是实际的帐户。

目前,我在构建图表时收集了叶ID(实际帐户)。我可以这样做,因为它们由数据中的某些属性标识。 然后我迭代:

for leaf in detail_or_bank_accts:
    paths_to_detail_or_bank_accts.append(list(nx.all_simple_paths(G,0,leaf)))

但幸运的是,我知道叶子节点。有更优雅的方式吗?

1 个答案:

答案 0 :(得分:1)

我假设你有DiGraph。很容易弄清楚哪些节点是叶子。

for node in G:
    if G.out_degree(node)==0: #it's a leaf
        paths.append(nx.shortest_path(G, root, node))