475.二叉樹的最大路徑和 II

描述

給一棵二叉樹,找出從根節(jié)點出發(fā)的路徑中,和最大的一條
這條路徑可以在任何二叉樹中的節(jié)點結(jié)束,但是必須包含至少一個點(也就是根了)

樣例

給出如下的二叉樹:

      1
     / \
    2   3

返回4。(最大的路徑為1→3)

代碼

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param root the root of binary tree.
     * @return an integer
     */
    public int maxPathSum2(TreeNode root) {
        if (root == null) {
            // 不能return 0;因為整棵樹的結(jié)點值可能都為負(fù)
            return Integer.MIN_VALUE;
        }
        
        int left = maxPathSum2(root.left);
        int right = maxPathSum2(root.right);
        // Math.max(left, right)必須和0比較
        // 因為葉子結(jié)點的左右兒子為空
        // Math.max(left,right)必定會返回Integer.MIN_VALUE
        // 遇到葉子結(jié)點的左右兒子函數(shù)值應(yīng)該返回0
        return root.val + Math.max(0, Math.max(left, right));
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹與前面介紹的線性表,棧,隊列等線性結(jié)構(gòu)不同,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,764評論 1 31
  • B樹的定義 一棵m階的B樹滿足下列條件: 樹中每個結(jié)點至多有m個孩子。 除根結(jié)點和葉子結(jié)點外,其它每個結(jié)點至少有m...
    文檔隨手記閱讀 13,684評論 0 25
  • 面試題7:重建二叉樹 題目: 輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果。請重建該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷...
    lyoungzzz閱讀 637評論 0 0
  • 一直以來,我都很少使用也避免使用到樹和圖,總覺得它們神秘而又復(fù)雜,但是樹在一些運算和查找中也不可避免的要使用到,那...
    24K男閱讀 6,861評論 5 14
  • 那一日,上午的校園,格外地炎熱,是那種濕熱的桑拿天。樹上有知了在叫,氣溫似乎一年熱過一年,若是晨間與日落還能靜好地...
    菲樂閱讀 722評論 1 3

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