#include
#include
typedef struct BiTNode{
char data;
struct BiTNode * lchild,* rchild;
}BiTNode,* BiTree;
int CreatBiTree(BiTree *T){
char data;
scanf("%c",&data);
getchar();
if(data=='#') *T=NULL;/* 注意使用*T,不是T */
else{
*T=(BiTNode *)malloc(sizeof(BiTNode));/* 注意使用*T,不是T */
if(*T==NULL)return 0;/* 注意使用*T,不是T*/
(*T)->data=data;/**/
CreatBiTree(&((*T)->lchild));/* 注意使用*T,不是T, 而且传参使用& */
CreatBiTree(&((*T)->rchild));/* 注意使用*T,不是T, 而且传参使用& */
}
return 1;
}
void PreOrder(BiTree T){
if(T==NULL)return ;
printf("%c\n",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
void InOrder(BiTree T){
if(T==NULL)return ;
InOrder(T->lchild);
printf("%c\n",T->data);
InOrder(T->rchild);
}
void PostOrder(BiTree T){
if(T==NULL)return ;
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c\n",T->data);
}
void main(){
BiTree T;
CreatBiTree(&T);/*传参使用&,传的是指针的地址*/
PreOrder(T);
InOrder(T);
PostOrder(T);
system("pause");
}
int CreatBiTree(BiTree *T)//错误在这,BiTree本身就已经是指针了,不需要再加*
改成
int CreatBiTree(BiTree T)
后面的T=t; 出错也是这个原因,因为T是BiTree*,也就是BiTNode**,而t是BiTNode *,两者非同一指针类型,赋值自然出错。