TZOJFBI树-创新互联
FBI树
当前文章:TZOJFBI树-创新互联
文章链接:http://azwzsj.com/article/cesepg.html
描述
创新互联服务项目包括碧江网站建设、碧江网站制作、碧江网页制作以及碧江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,碧江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到碧江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。
FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2^N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:
1) T的根结点为R,其类型与串S的类型相同;
2) 若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造R的右子树T2。
现在给定一个长度为2^N的“01”串,请用上述构造方法构造出一棵FBI树,并输出它的后序遍历序列。
输入
输入的第一行是一个整数N(0<=N<=10),第二行是一个长度为2^N的“01”串。
输出
输出包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。
样例输入
样例输出
题目上传者
crq
分析:树的例题,runtime errorr好几次/(ㄒoㄒ)/~~
ku要开到2的10次方1024;
注意l==r时把最后一个*t的ltree和rtree指向NULL//
别的不说,简单题,上代码
#include#include//根结点自行创造//
using namespace std;
int n;
int f1,f0;
char ku[1500];
struct tree{
char data;
tree *ltree,*rtree;
};
void create_tree(int l,int r,tree *&t)
{
f1=0;f0=0;
for(int i=l;i<=r;i++)
{
if(ku[i]=='1')
f1=1;
else if(ku[i]=='0')
f0=1;
}
char temp;
if(f1&&f0)
temp='F';
else if(f1)
temp='I';
else if(f0)
temp='B';
t=(tree*)malloc(sizeof(tree));
t->data=temp;
if(l==r)
{
t->ltree=NULL;
t->rtree=NULL;
return ;
}
int mid=l+r>>1;
create_tree(l,mid,t->ltree);
create_tree(mid+1,r,t->rtree);
}
void after(tree *t)
{
if(t)
{
after(t->ltree);
after(t->rtree);
cout<data;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
int l=1,r=1;
if(n)
{
while(n--)
r*=2;
}
for(int i=l;i<=r;i++)
cin>>ku[i];
tree *t=NULL;
create_tree(l,r,t);
after(t);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前文章:TZOJFBI树-创新互联
文章链接:http://azwzsj.com/article/cesepg.html