#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
#define TreeNode dummy_TreeNode
struct TreeNode{
}
;
#undef TreeNode
int sz;
int arr[ 10000 ] ;
TreeNode node[ 10000 ] ;
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 ;
int 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 ) ;
}
}
;
// cLay varsion 20200325-1
// --- original code ---
// #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);
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KI2RlZmluZSBUcmVlTm9kZSBkdW1teV9UcmVlTm9kZQpzdHJ1Y3QgVHJlZU5vZGV7Cn0KOwojdW5kZWYgVHJlZU5vZGUKaW50IHN6OwppbnQgYXJyWzEwMDAwXTsKVHJlZU5vZGUgbm9kZVsxMDAwMF07CmludCB1czsKdm9pZCBkZnMoVHJlZU5vZGUgKm4pewogIGlmKG49PU5VTEwpewogICAgcmV0dXJuOwogIH0KICBhcnJbc3orK10gPSBuLT52YWw7CiAgZGZzKG4tPmxlZnQpOwogIGRmcyhuLT5yaWdodCk7Cn0KVHJlZU5vZGUqIGNvbnN0cnVjdChpbnQgYSwgaW50IGIpewogIGlmKGEgPiBiKXsKICAgIHJldHVybiBOVUxMOwogIH0KICBpbnQgYyA9IChhK2IpIC8gMjsKICBpbnQgbm93ID0gdXMrKzsKICBub2RlW25vd10udmFsID0gYXJyW2NdOwogIG5vZGVbbm93XS5sZWZ0ID0gY29uc3RydWN0KGEsYy0xKTsKICBub2RlW25vd10ucmlnaHQgPSBjb25zdHJ1Y3QoYysxLGIpOwogIHJldHVybiAmbm9kZVtub3ddOwp9CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBUcmVlTm9kZSogYmFsYW5jZUJTVChUcmVlTm9kZSogcm9vdCl7CiAgICBzeiA9IHVzID0gMDsKICAgIGRmcyhyb290KTsKICAgIHNvcnQoYXJyLCBhcnIrc3opOwogICAgcmV0dXJuIGNvbnN0cnVjdCgwLCBzei0xKTsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAyMDAzMjUtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyAjZGVmaW5lIFRyZWVOb2RlIGR1bW15X1RyZWVOb2RlCi8vIHN0cnVjdCBUcmVlTm9kZSB7fTsKLy8gI3VuZGVmIFRyZWVOb2RlCi8vIAovLyBpbnQgc3osIGFyclsxZDRdOwovLyBUcmVlTm9kZSBub2RlWzFkNF07IGludCB1czsKLy8gCi8vIHZvaWQgZGZzKFRyZWVOb2RlICpuKXsKLy8gICBpZihuPT1OVUxMKSByZXR1cm47Ci8vICAgYXJyW3N6KytdID0gbi0+dmFsOwovLyAgIGRmcyhuLT5sZWZ0KTsKLy8gICBkZnMobi0+cmlnaHQpOwovLyB9Ci8vIAovLyBUcmVlTm9kZSogY29uc3RydWN0KGludCBhLCBpbnQgYil7Ci8vICAgaWYoYSA+IGIpIHJldHVybiBOVUxMOwovLyAgIGludCBjID0gKGErYikgLyAyLCBub3cgPSB1cysrOwovLyAgIG5vZGVbbm93XS52YWwgPSBhcnJbY107Ci8vICAgbm9kZVtub3ddLmxlZnQgPSBjb25zdHJ1Y3QoYSxjLTEpOwovLyAgIG5vZGVbbm93XS5yaWdodCA9IGNvbnN0cnVjdChjKzEsYik7Ci8vICAgcmV0dXJuICZub2RlW25vd107Ci8vIH0KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIFRyZWVOb2RlKiBiYWxhbmNlQlNUKFRyZWVOb2RlKiByb290KSB7Ci8vICAgICBzeiA9IHVzID0gMDsKLy8gICAgIGRmcyhyb290KTsKLy8gICAgIHNvcnQoYXJyLCBhcnIrc3opOwovLyAgICAgcmV0dXJuIGNvbnN0cnVjdCgwLCBzei0xKTsKLy8gICB9Ci8vIH07Cg==
compilation info
prog.cpp:16:1: error: ‘TreeNode’ does not name a type; did you mean ‘remove’?
TreeNode node[10000];
^~~~~~~~
remove
prog.cpp:18:10: error: variable or field ‘dfs’ declared void
void dfs(TreeNode *n){
^~~~~~~~
prog.cpp:18:10: error: ‘TreeNode’ was not declared in this scope
prog.cpp:18:10: note: suggested alternative: ‘remove’
void dfs(TreeNode *n){
^~~~~~~~
remove
prog.cpp:18:20: error: ‘n’ was not declared in this scope
void dfs(TreeNode *n){
^
prog.cpp:18:20: note: suggested alternative: ‘yn’
void dfs(TreeNode *n){
^
yn
prog.cpp:26:1: error: ‘TreeNode’ does not name a type; did you mean ‘remove’?
TreeNode* construct(int a, int b){
^~~~~~~~
remove
prog.cpp:39:3: error: ‘TreeNode’ does not name a type; did you mean ‘remove’?
TreeNode* balanceBST(TreeNode* root){
^~~~~~~~
remove
stdout