今天的題目為124.Binary Tree Maximum Path Sum,今天的題目是一棵二元樹中,一條路徑是由一系列節點組成,其中每對相鄰節點之間都有邊相連,每個節點在路徑中最多只能出現一次,但路徑不一定要經過根節點,路徑的總和是路徑上所有節點的值之和。
以下為程式碼:
class Solution {
private int maxSum = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
dfs(root);
return maxSum;
}
private int dfs(TreeNode node) {
if (node == null) return 0;
int left = Math.max(dfs(node.left), 0);
int right = Math.max(dfs(node.right), 0);
int currentPathSum = node.val + left + right;
maxSum = Math.max(maxSum, currentPathSum);
return node.val + Math.max(left, right);
}
}