二叉树最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点
示例 1:

示例 2:

- 一条从父节点延伸下来的路径,只能进入左子树或者右子树,不能同时进入左右子树
- 只有在最大贡献值大于0的时候,才会选取对应的子节点
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
let maxPathSum = function(root){
let sum = Num.MIN_SAFE_INTEGER
let dfs = (root) =>{
if(!root){
return 0
}
let left = dfs(root.left)
let right = dfs(root.right)
const maxSum = left + root.val + right // 计算总的最大路径和
sum = Math.max(sum, maxSum)
const max = root.val + Math.max(left, right)
return max < 0 ? 0 : max
}
dfs(root)
return sum
}

浙公网安备 33010602011771号