给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。
这个路径的开始节点和结束节点可以是二叉树中的任意节点
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @return int整型
*/
function maxPathSum( root ) {
// write code here
var maxSum = -Infinity
function getMax(root){
if(!root) return 0;
let leftSum = Math.max(0,getMax(root.left))
let rightSum = Math.max(0,getMax(root.right))
maxSum = Math.max(maxSum,leftSum + rightSum + root.val)
// dfs找最大值
return Math.max(0,Math.max(leftSum,rightSum)+root.val)
}
getMax(root)
return maxSum
}
module.exports = {
maxPathSum : maxPathSum
};