此为由二叉树前序序列和中序序列求后序序列的代码,运行错误,求大神指点错在哪里
程序代码:
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<string.h> using namespace std; typedef struct vode { char date; struct vode *l,*r; }bitree; void getpreordertraverse(bitree *root,char pre[],char in[],int ps,int s,int n); void postordertraverse(bitree *root); int main() { int zong ; cin>>zong; while(zong--) { char pre[100],in[100]; cin>>pre>>in; int len=strlen(pre); bitree *root; getpreordertraverse(root,pre,in,0,0,len); postordertraverse(root); cout<<endl; } return 0; } void getpreordertraverse(bitree *root,char pre[],char in[],int ps,int s,int n) { if(n==0)root=NULL; else { root=(bitree *)malloc(sizeof(bitree)); root->date=pre[ps]; int k; for(k=s;k<=s+n-1;k++) if(in[k]==pre[ps]) break; getpreordertraverse(root->l,pre,in,ps+1,s,k-s); getpreordertraverse(root->r,pre,in,ps+1+(k-s),k+1,n-(k-s)-1); } } void postordertraverse(bitree *root) { if(root) { postordertraverse(root->l); postordertraverse(root->r); cout<<root->date; } }