uva-536,从先序中序得出后序

来源:互联网 发布:批处理命令安装软件 编辑:程序博客网 时间:2024/06/01 09:55

build右序列的时候粗心,根节点p传错参数了,改了很久才发现

#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <iostream>using namespace std;#define DEBUGconst int maxn=26+5,maxv=26;char pre_s[maxn],in_s[maxn];void build(int l,int r,int p,int len){    if(p>=len)return;    char c=pre_s[p];    int m=-1;    // printf("%c %d %d\n", c,l,r);    if(l>r)return;    for(int i=l;i<=r;i++)        if(in_s[i]==c)            m=i;    // cout<<m<<endl;    // if(m==-1)        // printf("%d %d %d %d\n", l,r,m,p);    build(l,m-1,p+1,len);build(m+1,r,p+1+m-l,len);    // printf("%c\n", c);    cout<<c;}int main(){#ifdef DEBUG    freopen("in.txt", "r", stdin);    freopen("out.txt", "w", stdout);#endif    while(scanf("%s",pre_s)!=EOF){        scanf("%s",in_s);        // cout<<pre_s<<endl;        // cout<<in_s<<endl;        build(0,strlen(in_s)-1,0,strlen(in_s));        cout<<endl;    }#ifdef DEBUG    fclose(stdin);    fclose(stdout);#endif    return 0;}
阅读全文
0 0
原创粉丝点击