USACO/heritage 3.4.2 前序 中序 后序

来源:互联网 发布:js的二维数组赋值 编辑:程序博客网 时间:2024/06/07 23:28

一个简单的由先序和中序求后序的题,但是我多加了一个1,弄了半天

智商捉急。。。

#include <stdio.h>#include <stdlib.h>int search(char s[],char key){    int i ;    for(i=0;s[i];i++)    {        if(s[i]==key)        {            return i;        }    }}void creat(char s1[],char s2[],char s3[],int n)                              //n表示编号从0,1...n-1{    char key;    int position;    if(s2[0]&&n>=0)    {        key=s2[0];        position=search(s1,key);        s3[n]=key;        creat(s1,s2+1,s3,position-1);                              //相当于将中序分为两个部分,然后不停的递归        creat(s1+position+1,s2+position+1,s3+position,n-position-1);//注意最后两个参数的值。    }}int main(){    FILE *fin=fopen("heritage.in","r");    FILE *fout=fopen("heritage.out","w");    char preorder[30]={0};    char inorder[30]={0};    char postorder[30]={0};    int n;    fscanf(fin,"%s",inorder);    fscanf(fin,"%s",preorder);    n=strlen(inorder);    creat(inorder,preorder,postorder,n-1);    fprintf(fout,"%s\n",postorder);    return 0;}


原创粉丝点击