TZOJFBI树-创新互联

FBI树

描述

创新互联服务项目包括碧江网站建设、碧江网站制作、碧江网页制作以及碧江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,碧江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到碧江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

我们可以把由“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://ybzwz.com/article/cesepg.html