我想以递归方式定义函数 sumOfLeftLeaves :
class Node(object):
def __init__(self,x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def sumOfLeftLeaves(self,root):
if root.val == None:
return 0
elif (root.left.left == None and root.left.right == None):
return root.left.val + sumOfLeftLeaves(root.right)
else:
return sumOfLeftLeaves(root.left)+sumOfLeftLeaves(root.right)
但它给出了一个错误“NameError:全局名称'sumOfLeftLeaves'未定义”,但我认为它是递归定义的,有什么不对?
答案 0 :(得分:2)
sumOfLeftLeaves
仍然是类上的方法,而不是全局定义的函数。您可以在self
上以绑定方式访问它,就像您访问任何其他方法一样:
self.sumOfLeftLeaves(...)
在测试is None
对象时,您应该真正使用None
:
class Solution(object):
def sumOfLeftLeaves(self, root):
if root.val is None:
return 0
elif (root.left.left is None and root.left.right is None):
return root.left.val + self.sumOfLeftLeaves(root.right)
else:
return (self.sumOfLeftLeaves(root.left) +
self.sumOfLeftLeaves(root.right))