LeetCode Biweekly Contest 21 4問目 - Maximum Sum BST in Binary Tree [1373]

Source

LeetCode Biweekly Contest 21
問題文

問題概要

省略

解法

省略

cLayversion 20200308-1)のコード

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年04月25日09時30分28秒
Last modified: 2020年03月08日10時23分14秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る

Logged in as: unknown user (not login)

ログイン: