0

我正在做一个 leetcode 问题 - rightSideView。当我创建一个内部辅助函数时,我认为我可以访问外部函数变量。但是,这只适用于结果(一个列表),而不适用于 maxHeight(一个 int)。下面引用的代码:

class Solution(object):
    def rightSideView(self, root):
       result = []
       maxHeight = 0
       def dfs(node, height):
           if node is not None:
               height += 1
               if height > maxHeight:
                   maxHeight = height
                   result.append(node.val)
               dfs(node.right, height)
               dfs(node.left, height)
       dfs(root, 0)
       return result

如果我引用 self.maxHeight,这可以修复;但是我不必为结果做同样的事情。为什么是这样?难道列表是在python中的类中创建为全局变量的吗?不知道如何解释这一点。

以下代码可以正常工作:

class Solution(object):
    def rightSideView(self, root):
       result = []
       self.maxHeight = 0
       def dfs(node, height):
           if node is not None:
               height += 1
               if height > self.maxHeight:
                   self.maxHeight = height
                   result.append(node.val)
               dfs(node.right, height)
               dfs(node.left, height)
       dfs(root, 0)
       return result
4

0 回答 0