hdu Binary Tree Traversals

题意:
根据前序和中序,算出后序
 #include<stdio.h>
int buildTree(int n,int *a,int *b,int *c)
{
    int *p=b,t;
    if(n<=0) return 0;
    while(1)
    {
    if(*a==*p) break;//找出中根的位置
    else p++;
    }
    t=p-b;
    buildTree(t,a+1,b,c);//建立左子树
    buildTree(n-1-t,a+t+1,b+t+1,c+t);//建立右子树
    c[n-1]=*a;
}
int main()
{
    int n,a[1010],b[1010],c[1010],i;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        for(i=0;i<n;i++)
        scanf("%d",&b[i]);
        buildTree(n,a,b,c);
        for(i=0;i<n-1;i++)
        printf("%d ",c[i]);
        printf("%d\n",c[n-1]);
    }
    return 0;
}
    

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