PTA:Tree Traversals Again(25分) C语言
程序员文章站
2022-03-18 11:15:31
...
#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;
}
上一篇: jquery怎么判断对象是否存在?
下一篇: Python中的条件判断语句基础学习