LeetCode Biweekly Contest 21
問題文
省略
省略
C++に変換後のコードはこちら
#define main dummy_main
{}
#undef main
#define TreeNode dummy_TreeNode
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
#undef TreeNode
ll res;
void solve(TreeNode *n, int &mn, int &mx, int &ok, ll &sm){
int mn1, mx1, ok1; ll sm1;
int mn2, mx2, ok2; ll sm2;
if(n == NULL){
mn = int_inf;
mx = -int_inf;
ok = 1;
sm = 0;
return;
}
solve(n->left, mn1, mx1, ok1, sm1);
solve(n->right, mn2, mx2, ok2, sm2);
mn = min(mn1, mn2, n->val);
mx = max(mx1, mx2, n->val);
ok = (ok1 && ok2);
if(mx1 >= n->val) ok = 0;
if(mn2 <= n->val) ok = 0;
sm = sm1 + sm2 + n->val;
if(ok) res >?= sm;
}
class Solution {
public:
int maxSumBST(TreeNode* root) {
int mn, mx, ok; ll sm;
res = 0;
solve(root, mn, mx, ok, sm);
return res;
}
};
Current time: 2024年05月04日22時39分06秒
Last modified: 2020年03月08日10時23分14秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る
Logged in as: unknown user (not login)