Skip to content

Latest commit

 

History

History
47 lines (36 loc) · 1.22 KB

File metadata and controls

47 lines (36 loc) · 1.22 KB

LeetCode Records - Question 124 Binary Tree Maximum Path Sum

Attempt 1: Calculate the local max sum and the return max sum

class Solution {

    private int maxSum = Integer.MIN_VALUE;

    public int maxPathSum(TreeNode root) {
        maxPathSumRecursion(root);

        return maxSum;
    }

    private int maxPathSumRecursion(TreeNode root) {
        // Empty node
        if (root == null) {
            return 0;
        }

        // One node
        if (root.left == null && root.right == null) {
            maxSum = Math.max(maxSum, root.val);
            return root.val;
        }

        // Calculate each sum
        int returnMaxSum = root.val;
        int left = maxPathSumRecursion(root.left);
        int right = maxPathSumRecursion(root.right);

        // Calculate the return max sum
        returnMaxSum = Math.max(returnMaxSum, root.val + left);
        returnMaxSum = Math.max(returnMaxSum, root.val + right);

        // Calculate the local max sum
        int localMaxSum = Math.max(returnMaxSum, root.val + left + right);
        maxSum = Math.max(maxSum, localMaxSum);

        return returnMaxSum;
    }
}
  • Runtime: 0 ms (Beats: 100.00%)
  • Memory: 43.93 MB (Beats: 83.37%)