这破代码是一天也不想写了
C++语言
求大佬指点
#include<bits/stdc++.h>
using namespace std;
char ch[1100];
int n;
struct TreeNode
{
char v;
TreeNode *l,*r;
TreeNode(char x): v(x),l(NULL),r(NULL) {}
};
TreeNode *BuildTree(int left,int right)
{
if(left>right)
{
return NULL;
}
int cnt0=0,cnt1=0;
for(int i=left;i<=right;i++)
{
if(ch[i]=='0') cnt0++;
else cnt1++;
}
char val;
if(cnt0==right-left+1) val='B';
if(cnt1==right-left+1) val='I';
if(cnt0>0&&cnt1>0) val='F';
TreeNode *root=new TreeNode(val);
if((right+left)/2>left) root->l=BuildTree(left,(right+left)/2);
if((right+left)/2+1<right) root->r=BuildTree((right+left)/2+1,right);
}
void postorder(TreeNode *root)
{
if(root!=NULL)
{
cout<<root->v;
postorder(root->l);
postorder(root->r);
}
}
int main()
{
scanf("%d %s",&n,&ch);
int len=strlen(ch);
TreeNode *root=BuildTree(0,len-1);
postorder(root);
return 0;
}