我根据有向图构建了一棵树。源数据是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)))
但幸运的是,我知道叶子节点。有更优雅的方式吗?
答案 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))