计算从根到叶的所有路径的所有节点

时间:2015-03-31 19:20:49

标签: python tree-traversal treepath

如果给定一个带有整数节点的树:1~10,并且所有节点的分支因子为3,我怎样才能编写一个遍历树的函数从根到叶子为每条路径计数

因此,对于这个例子,假设它需要返回:

{1: 1, 2: 5}

我尝试过这个辅助功能:

def tree_lengths(t):
    temp = []
    for i in t.children:
        temp.append(1)
        temp += [e + 1 for e in tree_lengths(i)]
    return temp

此代码有太多错误。首先,它在返回列表的遍历中留下每个被访问节点的印记 - 因此很难确定哪些是我需要从该列表中获得的值。另一方面,如果树很大,它不会在到达“for t in t.children”行之前留下路径中的根和早期节点的印记。首先需要:从根叶复制所有路径;第二种:专门为每个路径计数的最终数量返回一个列表。

请帮忙!这太难了。

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么,但是你可能需要定义一个递归函数,它接受一个节点(树的头或树的头部)和一个整数(你的孩子的数量)到目前为止已经遍历了),也许到目前为止每个访问节点的列表。如果节点没有子节点,您已经到达了一个叶子,您可以打印出您需要的任何信息。否则,对于每个子节点,使用新参数再次调用此递归函数(+1计数,子节点作为头节点等)。