由于在刷题的时候有一个这样的需求,需要在dfs中反复修改一个变量值,这个时候想起来使用global来进行全局变量的修改。但是我只用过改一次的情况,迭代用global修改全局变量的方法一直我都没有成功。一直以来我都是使用list这种不会在迭代中产生歧义的方法来修改。
今天我想到了一个更好的使用全局变量的方法,那就是把全局变量存在self里,这样在class里函数中都可以访问self里的变量。尤其刷leetcode时这样很方便。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
if not root:
return 0
self.path = root.val
def dfs(node):
if node.left and node.right:
left = dfs(node.left)
right = dfs(node.right)
res = node.val+max(left,right,0)
max_path = node.val+max(left,0)+max(right,0)
self.path = max_path if max_path>self.path else self.path
return res
elif node.left and (not node.right):
res = node.val+max(dfs(node.left),0)
self.path = res if res>self.path else self.path
return res
elif node.right and (not node.left):
res = node.val+max(dfs(node.right),0)
self.path = res if res>self.path else self.path
return res
else:
res = node.val
self.path = res if res>self.path else self.path
return node.val
dfs(root)
return self.path