c语言-给出前序遍历与中序遍历输出后序遍历

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("请输入前序顺序:\n");
    for(int i=0;i<n;i++){
        scanf("%d",&pre[i]);
    }
    
    printf("请输入中序顺序:\n"); 
    
    for(int i=0;i<n;i++){
        scanf("%d",&in[i]);
    }
    
    solve(0,0,0,n);
    
    printf("后序遍历的顺序为:\n");
    for(int i=0;i<n;i++){
        printf("%d ",post[i]);
    }
    
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/changfan/p/11893092.html