File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ import DS .TreeNode ;
2
+
3
+ /*
4
+ // Definition of TreeNode:
5
+ class TreeNode {
6
+ public int val;
7
+ public TreeNode left;
8
+ public TreeNode right;
9
+ public TreeNode(int val) {
10
+ this.val = val;
11
+ }
12
+ }
13
+ */
14
+
15
+ public class MaximumPathSum {
16
+ int maxSum = Integer .MIN_VALUE ;
17
+
18
+ public int maxPathSum (TreeNode root ) {
19
+ maxPathSumHelper (root );
20
+ return maxSum ;
21
+ }
22
+
23
+ private int maxPathSumHelper (TreeNode node ) {
24
+ // Base case: null nodes have no path sum.
25
+ if (node == null ) {
26
+ return 0 ;
27
+ }
28
+ // Collect the maximum gain we can attain from the left and right
29
+ // subtrees, setting them to 0 if they're negative.
30
+ int leftSum = Math .max (maxPathSumHelper (node .left ), 0 );
31
+ int rightSum = Math .max (maxPathSumHelper (node .right ), 0 );
32
+ // Update the overall maximum path sum if the current path sum is
33
+ // larger.
34
+ maxSum = Math .max (maxSum , node .val + leftSum + rightSum );
35
+ // Return the maximum sum of a single, continuous path with the
36
+ // current node as an endpoint.
37
+ return node .val + Math .max (leftSum , rightSum );
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments