C言語 2分探索木の左右ポインタがNULLになってしまう
C言語で外部ファイルからを読み込みそのデータに基づいて2分探索木を作成しようとしているのですが、ノードの左右のポインタにアドレスが代入されません。
何が違っているのでしょうか?
struct member{
int num;
char name[13];
char profile[70];
struct member *left;
struct member *right;
};
typedef struct member tree_mbr;
do{
tree_mbr newt;
if ((check = fscanf(fp, "%d %s %s", &newt.num, newt.name, newt.profile)) != EOF){
newt.left = NULL;
newt.right = NULL;
start = tree(newt,start);
}
}while(check != EOF);
tree_mbr *tree(tree_mbr key, tree_mbr *t)
{
if(t == NULL) {
t = (tree_mbr *) malloc(sizeof(tree_mbr))
*t = key;
}else if(key.num < t->num){
tree(key, t->left);
}else if(key.num > t->num){
tree(key, t->right);
}
return t;
}
void print_tree(tree_mbr *t)
{
static int c = 1;
if(t != NULL){
print_tree(t->left);
printf("%d %s %s\n", t->num, t->name, t->profile);
print_tree(t->right);
}
}