0

我要为自定义系统发育树类实现一个长度方法,以便我们可以在其上调用 len(TreeObject)。一棵树的长度取决于它有多少叶子。叶表示该节点没有子节点。'self.children' 等于该节点子节点的元组(节点,权重)列表。我非常接近我相信:

 def __len__(self):

# everytime it reaches the base case I should add 1
    if self.isLeaf():
        print('base case - reached leaf!')
        return 1

    for t,w in self.children:  
        print('not leaf so sent through loop')
        numLeaves = len(t)

    return numLeaves

代码以正确的次数到达 if 语句,例如,如果长度为 3,则输出“基本情况 - 到达叶子!” 3次分开。我只需要一种将它们加在一起并将其存储在变量中的方法。

4

1 回答 1

2

确实非常接近。您只是在覆盖numLeaves而不是对它们求和:

numLeaves = 0
for t,w in self.children:  
    print('not leaf so sent through loop')
    numLeaves += len(t)

它也可以以不同的方式实现:

sum(len(t) for (t,w) in self.children)
于 2013-02-11T22:04:32.173 回答