124 Binary Tree Maximum Path Sum

求二叉樹的最大路徑和,路徑含任意起始節(jié)點(diǎn)和任意終止節(jié)點(diǎn)。

遞歸實(shí)現(xiàn)

  • Runtime: 104 ms, faster than 51.09%
  • Memory Usage: 48.7 MB, less than 30.83%
var maxPathSum = function(root) {
    let res = -Infinity
    function recursive(root) {
        if (root === null) return 0
        let left = Math.max(0, recursive(root.left))
        let right = Math.max(0, recursive(root.right))
        res = Math.max(res, root.val + left + right)
        return root.val + Math.max(left, right)
    }
    recursive(root)
    return res
};
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var res = - Math.pow(2, 32) 
var maxPathSum = function(root) {
    subPathSum(root)
    return res
};
var subPathSum = function(root){
    if(root === null) return 0
    var left = Math.max(0, subPathSum(root.left))
    var right = Math.max(0, subPathSum(root.right))
    res = Math.max(res, root.val + left + right)
    return root.val + Math.max(left, right)
}

java實(shí)現(xiàn),faster than 96%

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int ans = Integer.MIN_VALUE;
    public int maxPathSum(TreeNode root) {
        //post order traversal
       maxPathSumCalculate(root);
       return ans;
    }
    
    public int maxPathSumCalculate(TreeNode root) {
        if (root == null) return 0;
        int left = Math.max(0,maxPathSumCalculate(root.left));
        int right = Math.max(0,maxPathSumCalculate(root.right));
        ans = Math.max(ans, root.val + left + right);
        return root.val + Math.max(left, right);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 你是我悲傷里的幸福 我見你,一見如故 忘了多久 我的愛入不敷出 肆無忌憚的酒后失言 一半的辜負(fù) 一半的孤獨(dú) 悲傷的...
    飛狐119閱讀 563評論 27 18
  • 閱讀:隨需 立冬。風(fēng),冷。適于在暖暖的家中,捧一本書,靜靜品讀。 卻遇周一。堵,忙。...
    大圖圖閱讀 231評論 0 0
  • 把你們從那面目可憎的丑屋里解救出來時(shí),我是用了十二萬分的柔情蜜意外加十二萬分的小心翼翼。當(dāng)那黃澄澄軟綿綿的鮮香果肉...
    采葭小妖閱讀 468評論 2 4
  • 如果想只渲染紅色這一分支,如果不做優(yōu)化,黃色部分是額外浪費(fèi)渲染的部分。你調(diào)用了setState或者傳入了不同的 P...
    Ynimi璞閱讀 1,708評論 2 0
  • 很快,一年又過去了。媽的,別bb,別矯情。其實(shí)本只想說一句話就好,既然開始了,那就多來幾句吧。大學(xué)的生活從來沒有讓...
    采蘑菇的楊梓瑩閱讀 260評論 0 0

友情鏈接更多精彩內(nèi)容