首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中递归导航树形结构

问在Python中递归导航树形结构
EN

Stack Overflow用户
提问于 2013-02-12 05:57:31
回答 1查看 482关注 0票数 0

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

代码语言:javascript
复制
 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,它将分别输出“base case - reached!”3次。我只需要一种将它们加在一起并将其存储在变量中的方法。

EN

回答 1

Stack Overflow用户

发布于 2013-02-12 06:04:32

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

代码语言:javascript
复制
numLeaves = 0
for t,w in self.children:  
    print('not leaf so sent through loop')
    numLeaves += len(t)

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

代码语言:javascript
复制
sum(len(t) for (t,w) in self.children)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14821630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档