/**
* Definition for a binary tree node.
* public class TreeNode {
* int val
* TreeNode left
* TreeNode right
* TreeNode(int x) { val = x
* }
*/
class Solution {
private int res = Integer.MIN_VALUE
public int maxPathSum(TreeNode root) {
maxSumByNode(root)
return res
}
public int maxSumByNode(TreeNode node) {
if (node == null) {
return 0
}
int leftTreeSum = maxSumByNode(node.left)
int rightTreeSum = maxSumByNode(node.right)
int cur = Math.max(node.val + leftTreeSum, node.val + rightTreeSum)
// res = Math.max(res,cur)
cur = Math.max(cur,node.val + leftTreeSum + rightTreeSum)
cur = Math.max(cur, node.val)
res = Math.max(res,cur)
return cur
}
}