uva536 Tree Recovery

来源:互联网 发布:java链表的实现 编辑:程序博客网 时间:2024/06/06 01:07

重建树。

#include<bits/stdc++.h>using namespace std;int l[30],r[30],pre[30],in[30],n,flag[30],ok;int bulid(int l1,int r1,int l2,int r2){    if(l2>r2) return 0;    int t=pre[l1];    int p=l2;    while(t!=in[p]) p++;    int cnt=p-l2;    l[t]=bulid(l1+1,l1+cnt,l2,p-1);    r[t]=bulid(l1+cnt+1,r1,p+1,r2);    return t;}void post_order(int t){    if(l[t]!=0)  post_order(l[t]);    if(r[t]!=0) post_order(r[t]);        printf("%c",'A'+t-1);}int main(){   string a,b;   while(cin>>a>>b){      memset(flag,0,sizeof(flag));      memset(l,0,sizeof(l));      memset(r,0,sizeof(r));      n=a.size();      for(int i=0;i<n;i++) pre[i]=a[i]-'A'+1;      for(int i=0;i<n;i++) in[i]=b[i]-'A'+1;      bulid(0,n-1,0,n-1);      post_order(pre[0]);      cout<<endl;   }}
0 0
原创粉丝点击