题解 | #二叉树中的最大路径和#

二叉树中的最大路径和

https://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a

/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型
 */
function maxPathSum( root ) {
    // write code here
    let max = -Infinity
    const maxGain = (node) => {
        if(node == null) return 0
        let left = Math.max(maxGain(node.left),0)
        let right =Math.max(maxGain(node.right),0)
		//如果以这个节点作为最大路径的联通点(也就是说从左节点到这个节点,再到右节点)那么此时可以组成的最大	  		//路径就是左孩子+右孩子+节点本身
        let nodeVal = node.val + left +right
        max =Math.max(nodeVal,max)
		//这里的情况是说:将该节点提供作为其他路径中的一环,那么它能提供的最大值只能选取左右孩子中的最大值
        return Math.max(left,right)+node.val

    }
    maxGain(root)
    return max
}
module.exports = {
    maxPathSum : maxPathSum
};

作者:牛客292468555号
链接:https://www.nowcoder.com/discuss/528630472302153728?sourceSSR=users
来源:牛客网

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务