二叉樹的最大路徑和
阿新 • • 發佈:2021-01-04
技術標籤: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);
}
}