通过先序序列和中序序列生成二叉链表,单独一次调用能得出正确结果,但是在主函数里调用一次之后再次调用,则第二次的结果会出现乱七八糟的数字,偶尔甚至会使第一次调用的结果也出错(整体顺序是对的,但是个别数字变成了乱七八糟的数字)。代码中的CDT就是ChaTre*类型,结构体别名。求帮忙看一下是哪里出了问题
CDT GenerateTree(int *A,int *B,int l){
int i=0;
CDT Node=(ChaTre*)malloc(sizeof(Node));
CDT RE=(ChaTre*)malloc(sizeof(RE));
while(A[0]!=B[i]){
i++;
}
Node->data=A[0];
Node->LChild=NULL;
Node->RChild=NULL;
if(i>0){
int *C,*E;
C=(int *)malloc(sizeof(int)*i);
E=(int *)malloc(sizeof(int)*i);
for(int j=0;jLChild=GenerateTree(C,E,i);
}
if(l-i-1>0){
int *D,*F;
D=(int *)malloc(sizeof(int)*(l-i-1));
F=(int *)malloc(sizeof(int)*(l-i-1));
for(int j=i+1;jRChild=GenerateTree(D,F,l-i-1);
}
return Node;
}
malloc要和free配套使用,有借有还再借不难