在这个任务中,我在实现递归时遇到了麻烦。

问题描述 投票:0回答:1

我在处理二元树。我有 class Tree 而我想写方法 sum() 返回树中所有数字的总和。这是我写的。

def sum(self):
    s = self.n
    if self.left == None and self.right == None:
        return
    elif self.left == None and self.right != None:
        s = s + self.right.sum()
    elif self.left != None and self.right == None:
        s = s + self.left.sum()
    else:
        s = s + self.right.sum()
        s = s + self.left.sum()
    return s

但它不工作,我被卡在这里。我应该如何在这个任务中实现递归?

python oop recursion binary-tree
1个回答
0
投票

你的代码失败了,因为你的初始 return 缺少一个值。

除此之外,你的函数包含了很多冗余,可以去掉,剩下的是:

def sum(self):
    s = self.n
    if self.right != None:
        s += self.right.sum()
    if self.left != None:
        s += self.left.sum()
    return s
© www.soinside.com 2019 - 2024. All rights reserved.