ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UVA536 二叉树重建 Tree Recovery

2021-03-04 19:58:46  阅读:174  来源: 互联网

标签:gt Recovery int Tree num l2 二叉树 l1 root


  • 根据前序和中序遍历递归建树,输出后序遍历。
#include<iostream> 
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
char tr1[35],tr2[35],tr3[35];
int num=1,ans;
struct node{
	int l,r;
	char a;
}n[305];
int build(int l1,int r1,int l2,int r2,int root)
{
	if(l1>r1) return 0;
 	int x=l2;
 	n[root].a=tr1[l1-1];
	char c=tr1[l1-1];
	while(tr2[x-1]!=c) x++;
	n[root].l=build(l1+1,l1+x-l2,l2,x-1,++num);
	n[root].r=build(l1+x-l2+1,r1,x+1,r2,++num);
	return root;
}
void gt(int x)
{
	if(n[x].l)
	gt(n[x].l);
	if(n[x].r)
	gt(n[x].r);
	tr3[++num]=n[x].a;
}
void intt()
{
	for(int i=1;i<=200;i++)
	n[i].l=n[i].r=0;
	num=1;
}
int main()
{
	while(cin>>tr1)
	{
		getchar();
		cin>>tr2;
		ans=strlen(tr2);
		build(1,ans,1,ans,1);
		num=0;
		gt(1);
		for(int i=1;i<=num;i++)
		cout<<tr3[i];
		cout<<endl;
		intt();
		getchar();
	}
}

标签:gt,Recovery,int,Tree,num,l2,二叉树,l1,root
来源: https://blog.csdn.net/gyp0205/article/details/114376416

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有