class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
balanced = [True]
def node_height(root):
if not root or not balanced[0]:
return 0
left_height = node_height(root.left)
right_height = node_height(root.right)
if abs(left_height - right_height) > 1:
balanced[0] = False
return 0
return 1 + max(left_height, right_height)
node_height(root)
return balanced[0]
我理解为什么上面的代码有效,但是当我将变量“balanced”的值更改为
balanced = True
代替第 3 行中的 balanced = [True]
和
在第 6、13 和 19 行将balanced[0]更改为balanced,出现错误。
class solution:
def func():
a = 5
b = 7
c = True
def nested_func():
return (a + b, c)
return nested_func()
print('sum is:', func())
所以我尝试了上面的代码来测试(也许嵌套函数无法获取具有布尔值作为值的变量),但能够得到“sum is: (12, True)”的结果 这表明嵌套函数能够获取其外部的变量。
有人可以解释一下吗?
您可以使用
nonlocal
关键字来实现:
...
balanced = True
def node_height(root):
nonlocal balanced
...