如何在Python中正确定义课堂中的功能



我想定义一个函数 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))

最新更新