如何编写对树中的整数求和的递归函数?

how to write a recursive function that sums the integers in a tree?

写一个递归函数TreeSum(T) 把树中的所有整数相加。我的测试用例是

TreeSum(set)

48

哪里

set=[[[[2,1],[3,7]],[1,2]],[[0,6],[[[3,2],[1,1]],[9,10]]]]

这是我目前的代码:

def TreeSum(T):
     if len(T)==0:
       return 0
     else:
       return T[0] + TreeSum(T[1:])

我从 return 行收到错误消息(“只能将列表(而不是“int”)连接到列表”)。我怎样才能解决这个问题? 错误:

----> 5    return T[0] + TreeSum(T[1:])
      6 
      7 TreeSum(maple)

TypeError: can only concatenate list (not "int") to list

@j1-lee 有正确的方法,但这在子列表的跨度方面是有限的(默默地忽略位置 > 1 的项目,或者如果前两个元素之一是整数则失败)。您需要对所有 sub-elements 应用递归函数。一种方法是使用 map

注意。我稍微更改了输入以将两个元素添加到第一个子列表

tree = [[[[2,1],1,[3,7],[1]],[1,2]],[[0,6],[[[3,2],[1,1]],[9,10]]]]

def treesum(x):
    if not isinstance(x, list):
        return x
    return sum(map(treesum, x))
print(treesum(tree))

输出:50