已知后序和中序,计算先序的(c/c++)方法实现

已知后序和中序,计算先序的(c/c++)方法实现
#include
#include
using namespace std;
char epi[30];
char in[30];
int find(char c,char a[],int s,int e)
{
    for(int i=s; i<=e; i++)
        if(a[i]==c) return i;
}
void epinum(char epi[],int epi_s,int epi_e,char in[],int in_s,int in_e)
{
    char c;
    int k;
    //printf("****************\n");
    if(in_s>in_e)return;
    if(in_s==in_e)
    {
        printf("%c",in[in_s]);
        return;
    }
    c=epi[epi_e];
    k=find(c,in,in_s,in_e);
    printf("%c",c);/*根节点输出*/
    epinum(epi,epi_s,epi_s+k-in_s-1,in,in_s,k-1);/*递归求解分割的左子树*/
    epinum(epi,epi_s+k-in_s,epi_e-1,in,k+1,in_e);/*递归求解分割的右子树*/
}

int main()
{

    while(scanf("%s%s",epi,in)!=EOF)
    {
        epinum(epi,0,strlen(epi)-1,in,0,strlen(in)-1);
        printf("\n");
    }
    return 0;
}


你可能感兴趣的:(二叉树)