DFS模拟,然后srch(i, j)表示输出用i, j组成的树的后序遍历,返回0就是都是0,1就是都是1,2就是0,1都有。。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char str[1025];
char put[3] = {'B', 'I' ,'F'};
int srch(int start, int end)
{
int i, j;
if(start == end){
printf("%c", put[str[start] - '0']);
return str[start] - '0';
}
i = srch(start, (start + end) / 2);
j = srch((start + end) / 2 + 1, end);
if(i == j){
printf("%c", put[i]);
return i;
}else{
printf("%c", 'F');
return 2;
}
}
int main(int argc, char **argv)
{
int n;
scanf("%d\n", &n);
scanf("%s", str);
srch(0, strlen(str) - 1);
printf("\n");
return 0;
}