欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PTA:Tree Traversals Again(25分) C语言

程序员文章站 2022-03-18 11:15:31
...

PTA:Tree Traversals Again(25分) C语言

#include<stdio.h>
#include<stdlib.h>
typedef struct stack{
    int stacksize;
    int *top;
    int *base;
}stack;
stack s;
int preorder[30];
int inorder[30];
int n,flag=0;
void getorder(int *preorder,int *inorder){
    s.stacksize=20;
    s.base=(int *)malloc(s.stacksize*sizeof(int));
    s.top=s.base;
    int j=0,k=0;
    scanf("%d",&n);
    for(int i=0;i<2*n;i++){
        char str[5];
        int a;
        scanf("%s",str);
        if(!strcmp(str,"Push")){
            scanf("%d",&a);
            preorder[j++]=a;
           *s.top=a;
            s.top++;
        }
        else{
            s.top--;
            inorder[k++]=*s.top;
        }
    }
}
void postorder(int n,int *preorder,int *inorder){
    if(n==0)
        return;
    int i,root;
    root=preorder[0];
    for(i=0;i<n;i++)
        if(inorder[i]==root)
            break;
    postorder(i,preorder+1,inorder);
    postorder(n-i-1,preorder+i+1,inorder+i+1);
    if(flag==0){
        printf("%d",root);
        flag=1;
    }
    else printf(" %d",root);
}
int main(){
    getorder(preorder,inorder);
    postorder(n,preorder,inorder);
    return 0;
}