POJ2255 Tree Recovery 前序 中序求后序

来源:互联网 发布:windows配置失败怎么办 编辑:程序博客网 时间:2024/05/20 07:15

根据前序找到在中序的位置 其两端则是其左右节点

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <limits.h>#include <malloc.h>#include <ctype.h>#include <math.h>#include <string>#include <iostream>#include <algorithm>using namespace std;#define MAXN 11111#include <queue>#include <vector>const int INF = 999999;int len1,len2,len;char qian[44],zhong[44],sum[44];void dfs(int s1,int e1,int s2,int e2){    if(s1>=e1)   return ;    sum[--len]=qian[s1];    int i;    for( i=s2;i<e2;i++)        if(qian[s1]==zhong[i])            break;    dfs(s1+i-s2+1,e1,i+1,e2);//右子树    dfs(s1+1,s1+i-s2+1,s2,i);//左子树}int main(){   // freopen("in.txt","r",stdin);   while(scanf("%s %s",qian,zhong)!=EOF)   {        len1=strlen(qian);        len2=strlen(zhong);        len=len1;        sum[len]=0;        dfs(0,len1,0,len2);        printf("%s\n",sum);   }    return 0;}


0 0