如何展开嵌套列表形式的树结构,提取所有独立路径?
展开嵌套路径树为独立路径的递归实现
这种嵌套列表形式的路径树,用递归处理是最直接的方案,完全适配你提到的「路径长度、分叉数未知但有限」的场景。
核心实现代码(Python)
def flatten_path_tree(tree): # 处理单个节点的情况(比如递归到最底层的叶子节点) if not isinstance(tree, list): return [[tree]] current_node = tree[0] # 没有后续分支,直接返回单条路径 if len(tree) == 1: return [[current_node]] all_paths = [] # 遍历所有分支子树,递归展开后拼接当前节点 for subtree in tree[1:]: sub_paths = flatten_path_tree(subtree) for path in sub_paths: all_paths.append([current_node] + path) return all_paths
测试你的示例
把你给出的路径树传入函数:
L = [70, [49, [4]], [94, [120, [144]],[121, [150,[173]]]]] result = flatten_path_tree(L) print(result)
输出结果正好是你需要的三条独立路径:
[[70, 49, 4], [70, 94, 120, 144], [70, 94, 121, 150, 173]]
逻辑说明
- 递归拆解:每一层路径树的结构都是「当前节点 + 若干子路径树」,递归会把每个子路径树拆解到最底层的单个节点。
- 路径拼接:把当前节点加到每个子路径的开头,就能得到从根节点到当前子路径末端的完整路径。
- 兼容性:不管路径深度有多深、分叉数有多少,只要是有限的嵌套结构,这个函数都能正确处理,返回的列表可以直接作为节点可视化的数据源(比如遍历每条路径,给路径上的节点标记颜色)。
内容的提问来源于stack exchange,提问作者F. Heath
相关产品推荐
相关产品推荐

