【发布时间】:2018-05-03 18:25:44
【问题描述】:
对于这个问题的开放式性质提前道歉,但我目前正在集思广益,使用 Python 解决自动化问题。我正在分析的一组数据可以被认为是一棵如下所示的树:
我的问题有两个部分,首先是棘手的部分,然后是更一般的实现问题。
对于给定的顶级父节点(没有父节点的节点),我如何仅针对集合中的底部节点找到到底部子节点(没有子节点的节点)的路径我定义的价值观?例如,如果我只将值集定义为“B”和“F”,我只想提取从 A 到 B 和 A 到 F 的路径。如,我应该得到 [A -> Y -> B] 和 [A -> Z -> C -> F] 作为答案。
鉴于上述要求,在 Python 中表示这些树的最佳方式是什么?我最初的想法是嵌套字典,其中每个节点都定义为字典键。请记住,我给出的示例很简单。我将为许多不同的顶级父级构建这些树,每个顶级父级可能有很多很多子节点。
【问题讨论】:
-
请求节点的子集与总叶子集相比是否会非常小?如果不是(或者如果性能不是问题,因为树总是很小),您可以迭代所有叶子(使用简单的深度优先或广度优先搜索)并将其过滤为“这片叶子在想要的叶子?”
-
@abarnert 有道理,子集实际上将占总叶子的很大一部分,我不太担心性能。这是一种“一劳永逸”类型的脚本,只要它运行相对较快,遍历所有叶子就应该可以正常工作。
标签: python python-3.x tree