0

如果给定一棵树,其节点的整数为: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 i in t.children”行之前,它不会在路径中留下根和较早节点的印记。它首先需要:从根叶复制所有路径;第二:返回一个列表,专门用于每个路径计数的最终数量。

请帮忙!这太难了。

4

1 回答 1

0

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

于 2015-03-31T19:28:53.037 回答