我想定义一个函数 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)
但它给出了一个错误" nameRorr:全局名称'sumofleftleaves'未定义",但我认为它是递归定义的,是什么问题?
sumOfLeftLeaves
仍然是类上的方法,而不是全球定义的函数。您可以在self
上以绑定方法访问它,就像您访问其他任何方法一样:
self.sumOfLeftLeaves(...)
测试None
对象时,您应该真正使用is 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))