64,654
社区成员
发帖
与我相关
我的任务
分享
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
typedef struct BiTree
{
char data;
struct BiTree *Lchild, *Rchild ;
}BiTNode ;
void creat_tree(BiTNode *);
void preTaverse(BiTNode *);
void inTraverse(BiTNode *);
void postTaverse(BiTNode *);
char *pstr="abc de g f ";
int main(void)
{
BiTNode BT ;
// gets(pstr);
// printf("%s",pstr);
creat_tree(&BT);
// printf("OK");
preTaverse(&BT);
inTraverse(&BT);
postTaverse(&BT);
return 0;
}
void creat_tree(BiTNode *BT)
{
if( *pstr == ' ' || !(*pstr) )
{
BT = NULL ;
pstr++;
}
else
{
BT = (BiTNode *) malloc(sizeof(BiTNode));
if(NULL == BT)
{
printf("动态内存分配失败!\n");
exit(-1);
}
BT->data = *(pstr++);;
creat_tree(BT->Lchild) ;
creat_tree(BT->Rchild) ;
}
}
void preTaverse(BiTNode *BT)
{
if(NULL != BT)
{
printf("%c ",BT->data);
if(NULL != BT->Lchild )
preTaverse(BT->Lchild);
if(NULL != BT->Rchild )
preTaverse(BT->Rchild);
}
}
void inTraverse(BiTNode *BT)
{
if(NULL != BT)
{
if(NULL != BT->Lchild )
inTraverse(BT->Lchild);
printf("%c ",BT->data);
if(NULL != BT->Rchild )
inTraverse(BT->Rchild);
}
}
void postTaverse(BiTNode * BT)
{
if(NULL != BT)
{
if(NULL != BT->Lchild )
postTaverse(BT->Lchild);
if(NULL != BT->Rchild )
postTaverse(BT->Rchild);
printf("%c ",BT->data);
}
}
if( *pstr == ' ' || !(*pstr) )
{
BT = NULL ;
pstr++;
}
BT = (BiTNode *) malloc(sizeof(BiTNode));
# include <stdio.h>
# include <stdlib.h>
typedef struct BiTree
{
char data;
struct BiTree *Lchild, *Rchild ;
}BiTNode ;
void creat_tree(BiTNode **);
void preTaverse(BiTNode *);
void inTraverse(BiTNode *);
void postTaverse(BiTNode *);
char *pstr="abc de g f ";
int main(void)
{
BiTNode *ptrBT ;
// gets(pstr);
// printf("%s",pstr);
creat_tree(&ptrBT);
// printf("OK");
preTaverse(ptrBT);
putchar('\n');
inTraverse(ptrBT);
putchar('\n');
postTaverse(ptrBT);
return 0;
}
void creat_tree(BiTNode **ptr)
{
if(!*pstr)
{
*ptr = NULL ;
return;
}
if( *pstr == ' ' )
{
*ptr = NULL ;
pstr++;
}
else
{
*ptr = (BiTNode *) malloc(sizeof(BiTNode));
if(NULL == *ptr)
{
printf("动态内存分配失败!\n");
exit(-1);
}
(*ptr) ->data = *pstr++;
creat_tree(&(*ptr)->Lchild) ;
creat_tree(&(*ptr)->Rchild) ;
}
}
void preTaverse(BiTNode *BT)
{
if(NULL != BT)
{
printf("%c ",BT->data);
if(NULL != BT->Lchild )
preTaverse(BT->Lchild);
if(NULL != BT->Rchild )
preTaverse(BT->Rchild);
}
}
void inTraverse(BiTNode *BT)
{
if(NULL != BT)
{
if(NULL != BT->Lchild )
inTraverse(BT->Lchild);
printf("%c ",BT->data);
if(NULL != BT->Rchild )
inTraverse(BT->Rchild);
}
}
void postTaverse(BiTNode * BT)
{
if(NULL != BT)
{
if(NULL != BT->Lchild )
postTaverse(BT->Lchild);
if(NULL != BT->Rchild )
postTaverse(BT->Rchild);
printf("%c ",BT->data);
}
}