题解 | #二叉树中的最大路径和#
二叉树中的最大路径和
https://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a
题本身不难,但是被栈溢出卡了半天,python3的栈默认限制为1000,这也太小了吧.所以要先把recursion limit 设大一点. 之后就正常了.
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param root TreeNode类 # @return int整型 # import sys sys.setrecursionlimit(int(1e5)+100) class Solution: def __init__(self): self.mx=int(-1e18) self.st=set() def dfs(self,cur: TreeNode): if cur==None: return 0 lmx=self.dfs(cur.left) rmx=self.dfs(cur.right) self.mx=max(self.mx,lmx+rmx+cur.val) return max(0,cur.val+max(lmx,rmx)) def maxPathSum(self , root: TreeNode) -> int: self.dfs(root) return self.mx