Maximum Sum BST in Binary Tree LeetCode solution in Java

1
class Solution {
2

3
int ans = 0;
4

5
public int maxSumBST(TreeNode root) {
6
solve(root);
7
return ans;
8
}
9

10
// int[] = { min, max, sum };
11
private int[] solve(TreeNode root) {
12
if (root == null) return new int[] {Integer.MAX_VALUE, Integer.MIN_VALUE, 0};
13

14
int[] left = solve(root.left);
15
int[] right = solve(root.right);
16

17
if (root.val > left[1] && root.val < right[0]) {
18
int sum = left[2] + right[2] + root.val;
19
ans = Math.max(ans, sum);
20
return new int[] {Math.min(left[0], root.val), Math.max(root.val, right[1]), sum};
21
}
22

23
return new int[] {Integer.MIN_VALUE, Integer.MAX_VALUE, 0};
24
}
25
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0