1. 程式人生 > 其它 >二叉樹的最大路徑和

二叉樹的最大路徑和

技術標籤:Leetcode

二叉樹的最大路徑和

題目描述

給定一個二叉樹,請計算節點值之和最大的路徑的節點值之和是多少。
這個路徑的開始節點和結束節點可以是二叉樹中的任意節點
例如:
給出以下的二叉樹,
在這裡插入圖片描述
返回的結果為6

程式碼

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode類 
     * @return int整型
     */
int max = Integer.MIN_VALUE; public int maxPathSum (TreeNode root) { PathSum(root); return max; } public int PathSum(TreeNode root){ if(root == null) return 0; //獲取左邊的最大和值 int l = Math.max(PathSum(root.left), 0); //獲取右邊的最大和值 int
r = Math.max(PathSum(root.right), 0); //更新最大值 max = Math.max(max, l+r+root.val); //返回最大路徑和 return root.val+Math.max(l, r); } }