void CreatBiTree(BiTree *T)
为什么是BiTree *T,而不是 BiTree T?
#include
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreatBiTree(BiTree *T) {
char c;
scanf("%c", &c);
if (c == ' ')
*T = NULL;
else {
*T = (BiTNode *)malloc(sizeof(BiTNode));
(*T)->data = c;
CreatBiTree(&((*T)->lchild));
CreatBiTree(&((*T)->rchild));
}
}
因为你的创造函数里面用的是指针的功能啊,if(c==' ') *T=NULL; else *T = (BiTNode *)malloc(sizeof(BiTNode)); 只有指针才能接受malloc分配的指地址
一般二叉树的构建都是用的指针实现的,因为涉及到一个动态内存分配。 当然,你也可以用数组来实现二叉树,结构体数组,但这样二叉树就是定长的了