我正在做一个 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