能帮忙检查下是哪里出现了问题吗,是内存分配方面的问题吗?
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
typedef struct tree
{
char data;
struct tree * lchild;
struct tree * rchild;
}Tnode;
void MK(char in[],int ist,int ism,char pre[],int pret,int prem,Tnode** tr)
{
int i;
if (ist>ism || pret>prem)
*tr = NULL;
else
{
*tr = (Tnode *)malloc(sizeof(Tnode));
(*tr)->data = pre[pret];
for (i=ist;i<ism;i++)
{
if (in[i] = pre[pret])
{
MK(in,ist,i-1,pre,pret+1,pret+i-ist,&(*tr)->lchild);
MK(in,i+1,ism,pre,pret+i-ist+1,prem,&(*tr)->rchild);
break;
}
}
if (i>ism)
printf("输入不合法");
}
}
void trave (Tnode* tr)
{
if (tr!=NULL)
{
trave(tr->lchild);
trave(tr->rchild);
printf ("%c",tr->data);
}
}
int main ()
{
char in[20];
char pre[20];
Tnode* tr = NULL;
printf("前序序列");
gets(in);
printf("中序序列");
gets(pre);
int ism = strlen(in)-1;
int prem = strlen(pre)-1;
MK(in,0,ism,pre,0,prem,&tr);
trave(tr);
return 0;
}