c语言-给出前序遍历与中序遍历输出后序遍历
c语言-给出前序遍历与中序遍历输出后序遍历
#include<stdio.h> int post[7],in[7],pre[7]; void solve(int preL,int inL,int postL,int n){ int root,i,R,L; if(n==0){ return ; } if(n==1){ post[postL] = pre[preL]; return ; } root = pre[preL]; post[postL+n-1] = root; for(i=0;i<n;i++){ if(in[inL+i] == root){ break; } } L=i; R=n-L-1; solve(preL+1,inL,postL,L); solve(preL+L+1,inL+L+1,postL+L,R); } int main(){ int n; scanf("%d",&n); printf("请输入前序顺序: "); for(int i=0;i<n;i++){ scanf("%d",&pre[i]); } printf("请输入中序顺序: "); for(int i=0;i<n;i++){ scanf("%d",&in[i]); } solve(0,0,0,n); printf("后序遍历的顺序为: "); for(int i=0;i<n;i++){ printf("%d ",post[i]); } return 0; }