The problem lies in the use of divide-and-conquer law
#include <iostream>#include<string>#include<stack>using namespacestd;voidFunint*pre,int*mid,intLenint*result);intMain () {intN; int*a, *b; intx =0, top =0, y =0; Stack<int>S; CIN>>N; A= (int*)malloc(nsizeof(int)); b= (int*)malloc(nsizeof(int)); for(inti =0; I <2N i++){ stringstr; CIN>>str; if(str = ="Push") {cin>>A[x]; S.push (A[x]); X++; } Else{B[y]=S.top (); S.pop (); Y++; } } int*result = (int*)malloc(nsizeof(int)); Fun (A, b, n,result); cout<< result[0]; for(inti =1; I < n; i++) {cout<<" "<<Result[i]; }}voidFunint*pre,int*mid,intLenint*result) { if(len = =0){ return; } if(len = =1) {result[0] = pre[0]; return; } intp = pre[0]; Result[len-1] =p; inti; for(i = len-1; I >=1; i--){ if(Mid[i] = =p) { Break; }} fun (pre+1, Mid, I, result); Fun (pre+1+ I, Mid +1+ I, Len-1-I, result +i);}
Tree traversals Again (25)