FBI树

#include<cmath>
#include<iostream>
using namespace std;
char a[1000];
struct node
{
    char ch;
    int lson,rson;
}
tree[4001];
void postorder(int bt)
{
    if(bt)
    {
        postorder(tree[bt].lson);
        postorder(tree[bt].rson);
        cout << tree[bt].ch;
    }
}
int main()
{
    int d,k,n=0,j,i;
    cin >> d;
    for(i=1;i<=d+1;i++)
    n += pow(2,i-1);
    k = pow(2,d);
    cin >> a;
    for(i=0;i<k;i++)
    switch(a[i])
    {
        case '1':a[i]='I';break;
        case '0':a[i]='B';break;
    }
    for(i=0;i<k;i++)
    {
        j=i+n-k+1;
        tree[j].lson = tree[j].rson = 0;
        tree[j].ch = a[i];
        if(j%2==0)
        tree[j/2].lson = j;
        else
        tree[(j-1)/2].rson = j;
    }
    for(i=n-k;i>=1;--i)
    {
        if(tree[tree[i].lson].ch=='F'||tree[tree[i].rson].ch=='F')
        tree[i].ch = 'F';
        else if(tree[tree[i].lson].ch=='B'&&tree[tree[i].rson].ch=='B')
        tree[i].ch = 'B';
        else if(tree[tree[i].lson].ch=='I'&&tree[tree[i].rson].ch=='I')
        tree[i].ch = 'I';
        else
        tree[i].ch = 'F';
        if(i>1)
        {
            if(i%2==0)
            tree[i/2].lson = i;
            else
            tree[(i-1)/2].rson = i;            
        }
    }
    postorder(1);
    return 0;
}
全部评论

相关推荐

06-13 17:00
武汉大学 Java
6月了还有点击就送的offer吗😭,投麻了😢
叫我阿东就行:这个bg,也还没找到理想的工作吗?好难,好焦虑
点赞 评论 收藏
分享
06-13 21:59
门头沟学院 Java
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务