Hello

95 阅读1分钟
/**
 * 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;
    }
}