路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root
,返回其 最大路径和 。
示例 1:
输入:root = [1,2,3] 输出:6 解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6
示例 2:
输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42
提示:
- 树中节点数目范围是
[1, 3 * 104]
-1000 <= Node.val <= 1000
1 /** 2 * Definition for a binary tree node. 3 * function TreeNode(val, left, right) { 4 * this.val = (val===undefined ? 0 : val) 5 * this.left = (left===undefined ? null : left) 6 * this.right = (right===undefined ? null : right) 7 * } 8 */ 9 /** 10 * @param {TreeNode} root 11 * @return {number} 12 */ 13 var maxPathSum = function(root) { 14 let maxSum=Number.MIN_SAFE_INTEGER;//最大路径和 15 const dfs = (root)=>{ 16 if(root === null){//遍历到null节点,收益0 17 return 0; 18 } 19 const left = dfs(root.left);//左子树提供的最大路径和 20 const right = dfs(root.right);//右子树提供的最大路径和 21 const innerMaxSum=left+root.val+right;//当前子树内部的最大路径和 22 maxSum = Math.max(maxSum,innerMaxSum);//挑战最大记录 23 const outputMaxSum =root.val+Math.max(0,left,right);//当前子树对外提供的最大和 24 //如果对外提供的路径和为负,直接返回0,否则正常返回 25 return outputMaxSum <= 0?0:outputMaxSum; 26 } 27 dfs(root);//递归的入口 28 return maxSum; 29 };
标签:right,val,路径,124,二叉树,root,节点,left From: https://www.cnblogs.com/icyyyy/p/16794006.html