从给定订单和预购中打印后订单

问题描述 投票:0回答:1

以下用于从给定的预购和订单中打印后订单的代码显示了分段错误。你能解释为什么吗?

int j=0;
void post_order(int in[],int pre[],int start,int end){
    if(start>end) {
        return;
    }
    int i;
    for(int i=start;i<=end;i++){
        if(pre[j]==in[i]){
            break;
        }
    }

    j++;
    post_order(in,pre,start,i-1);
    post_order(in,pre,i+1,end);
    cout<<in[i]<<" ";
}
void printPostOrder(int in[], int pre[], int n)
{
//Your code here
int start=0;
int end = n-1;
post_order(in,pre,start,end);

}
c++ arrays recursion binary-tree
1个回答
0
投票
    int i;  //< uninitialised

    //   V--- a new variable called 'i'
    for(int i=start;i<=end;i++){
        if(pre[j]==in[i]){
            break;
        }
    }


    // this will probably crash (i hasn't been initialised yet!)
    cout<<in[i]<<" ";
© www.soinside.com 2019 - 2024. All rights reserved.