```cpp
#include<bits/stdc++.h>
using namespace std;
char a[2050];
void made_tree(string s,int k)
{
if(s.size()==0)return;
if(s.find('1')!=-1&&s.find('0')!=-1)a[k]='F';
else if(s.find('0')==-1)a[k]='I';
else if(s.find('1')==-1)a[k]='B';
if(s.size()>=2){
made_tree(s.substr(0,s.size()/2),2*k);
made_tree(s.substr(s.size()/2,s.size()/2),2*k+1);
}
}
void put_tree(int k)
{
if(a[k]=='F'||a[k]=='B'||a[k]=='I')
{
put_tree(k*2);
put_tree(k*2+1);
cout<<a[k];
}
}
int main()
{
int n;
string s;
cin>>n;
cin>>s;
made_tree(s,1);
put_tree(1);
return 0;
}
```
by liyunhe @ 2024-04-05 10:04:35
你将char a[2050]改成char a[205000]就行了
by xzy1303 @ 2024-04-13 11:08:49
@[xzy1303](/user/1046340)
谢谢!
我过了,其实a开5000就够了,大于2*2047+1即可
by liyunhe @ 2024-04-13 11:47:52