首先后序遍历:左右根,所以输出放在最后
其次它是一棵满二叉树,(
2
n
−
1
2^n-1
2n−1)
#include <cstdio>
using namespace std;
char s[1025]; int n;
void build(int l,int r){
if (l<r) build(l,(l+r)/2),build((l+r+1)/2,r);//左边,右边
bool B=1,I=1;
for (int i=1;i<=r-l+1;i++) if (s[l+i-1]=='1') B=0; else I=0;
if (B) putchar('B'); else if (I) putchar('I'); else putchar('F');
}
int main(){
scanf("%d\n%s",&n,s+1);
build(1,(1<<n));
return 0;
}