Maximum Sum BST in Binary Tree LeetCode solution in C++
1class Solution {2public:3int ans = 0;45array<int, 4> solve(TreeNode *root) {6if (!root) return {1, 0, INT_MIN, INT_MAX};78array<int, 4> l = solve(root->left);9array<int, 4> r = solve(root->right);1011if (l[0] and r[0]) {12if (root->val > l[2] and root->val < r[3]) {13ans = max({ans, l[1], r[1]});14return {1, l[1] + r[1] + root->val, max({root->val, l[2], r[2]}),15min({root->val, l[3], r[3]})};16}17}1819return {0, max(l[1], r[1]), INT_MIN, INT_MAX};20}2122int maxSumBST(TreeNode *root) {23auto arr = solve(root);24return max(ans, arr[1]);25}26};