树的创建问题
这个程序无发正常创建树#define NULL 0
int count;
typedef struct Bitree
{ char data;
struct Bitree *lchild,*rchild;
}bitree;
int CreateBitree(bitree *t)
{ char s;
scanf("%c",&s);
if(s==' ')
{ t=NULL;
return 0;
}
if(s=='#')
return ;
else
{
t=(bitree *)malloc(sizeof(bitree));
if(!t)
exit(0);
t->data=s;
CreateBitree(t->lchild);
CreateBitree(t->rchild);
return 1;
}
}
void PreBitree(bitree *t)
{
if(t!=NULL)
{
printf("%c ",t->data);
PreBitree(t->lchild);
PreBitree(t->rchild);
}
}
void InBitree(bitree *t)
{
if(t!=NULL)
{ InBitree(t->lchild);
printf("%c ",t->data);
InBitree(t->rchild);
}
}
void PostBitree(bitree *t)
{
if(t!=NULL)
{
PostBitree(t->rchild);
printf("%c ",t->data);
PostBitree(t->lchild);
}
}
void Displeaf(bitree *t)
{
if(t!=NULL)
{if((t->lchild==NULL)&&(t->rchild==NULL))
printf("%c ",t->data);
else
{Displeaf(t->lchild);
Displeaf(t->rchild);
}
}
exit(0);
}
int DepthBitree(bitree *t)
{
int max;
if(t!=NULL)
{
count++;
if((t->lchild==NULL)&&(t->rchild==NULL))
{
if(max<count)
{
max=count;
}
}
else
{
DepthBitree(t->lchild);
DepthBitree(t->rchild);
}
return max;
}
}
void main()
{
bitree *T;
int d,u;
u=CreateBitree(T);
if(u==1)
printf("createBitree ok");
else
if(u==0)
{ printf("unsuccessful"); }
PreBitree(T);
printf("\n\n");
InBitree(T);
printf("\n\n");
PostBitree(T);
printf("\n\n");
d=DepthBitree(T);
printf("d=%d\n",d);
Displeaf(T);
getch();
}