-1

Why this line add(root, sum, 0) gets NameError: name 'add' is not defined error?

class Solution:
    def rob(root: TreeNode) -> int:
        sum = [0, 0]
        add(root, sum, 0)
        if sum[0] < sum[1]:
            return sum[1]
        else:
            return sum[0]

    def add(node: TreeNode, sum: List[int], index: int):
        if not node:
            return
        sum[index] += node.val
        index += 1
        if index >= len(sum):
            index = 0;
        add(node.left, sum, index)
        add(node.right, sum, index)
Quynh Vo
  • 65
  • 7

2 Answers2

2

they are class functions, make use of self

Define like this: def add(self, node: TreeNode, sum: List[int], index: int):

and use it

self.add(node.left, sum, index)

drd
  • 575
  • 2
  • 8
0

Try this.

class Solution:
    def rob(self, root: TreeNode) -> int:
        sum = [0, 0]
        self.add(root, sum, 0)
        if sum[0] < sum[1]:
             return sum[1]
        else:
             return sum[0]

    def add(self, node: TreeNode, sum: List[int], index: int):
        if not node:
            return
        sum[index] += node.val
        index += 1
        if index >= len(sum):
            index = 0;
        self.add(node.left, sum, index)
        self.add(node.right, sum, index)