您的位置:首页 > 其它

POJ--2255 Tree recovery

2014-08-24 19:35 337 查看
补一下这一道恢复树的题目,前面好就做的吧。

题意:

就是给你一个前序遍历树和一个中序遍历树,让你恢复后序遍历树。(树的遍历

解法:

利用了前序遍历的第一个点为根节点,中序遍历的根节点分开左右子树的特点,利用递归输出后序遍历树。

#include <cstdio>
#include <cstring>
#include <cstdlib>

void fun(char *inOr,char *preOr,int len)
{
int ele,root=0;
if(len==0) return;
ele=*preOr;
for( ;root<len;root++)
if(inOr[root]==*preOr)break;
fun(inOr,preOr+1,root);

fun(inOr+root+1,preOr+root+1,len-root-1);
putchar(ele);
return;
}
int main()
{
char pre[27],in[27];
//freopen("tree_in.txt","r",stdin);
while(scanf("%s %s", pre, in) != EOF)
{
fun(in, pre, strlen(pre));
putchar(10);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: