LeetCode Weekly Contest 180 3問目 - Balance a Binary Search Tree [1382]

Source

LeetCode Weekly Contest 180
問題文

問題概要

省略

解法

省略

cLayversion 20200325-1)のコード

C++に変換後のコードはこちら

#define main dummy_main
{}
#undef main

#define TreeNode dummy_TreeNode
struct TreeNode {};
#undef TreeNode

int sz, arr[1d4];
TreeNode node[1d4]; int us;

void dfs(TreeNode *n){
  if(n==NULL) return;
  arr[sz++] = n->val;
  dfs(n->left);
  dfs(n->right);
}

TreeNode* construct(int a, int b){
  if(a > b) return NULL;
  int c = (a+b) / 2, now = us++;
  node[now].val = arr[c];
  node[now].left = construct(a,c-1);
  node[now].right = construct(c+1,b);
  return &node[now];
}

class Solution {
public:
  TreeNode* balanceBST(TreeNode* root) {
    sz = us = 0;
    dfs(root);
    sort(arr, arr+sz);
    return construct(0, sz-1);
  }
};

Current time: 2024年05月08日23時43分21秒
Last modified: 2020年03月30日02時54分02秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る

Logged in as: unknown user (not login)

ログイン: