首先,我试图从文件中读取二叉树(noob问题,我知道,但我不知道我做错了什么),但它根本不起作用,它一直在崩溃。问题是,我必须从文件中读取家谱,然后将其按顺序排列,按顺序和相应的顺序排列。现在我尝试用整数,一步一步。 问题似乎出现在我的创建函数中,即:
NodeT *createBinTree(int branch, NodeT *parent) {
int id;
FILE *f;
f=fopen("data.in","r");
while (!feof(f)) {
fscanf(f,"%d",&(parent->id));
fscanf(f,"%d",&id);
if (id == 0)
return NULL;
else {
p = (NodeT*)malloc(sizeof(NodeT));
if (p==NULL)
fatalError("Out of space in createBinTree");
p->id = id;
p->left = createBinTree(1, p);
p->right = createBinTree(2, p);
}}
close(f);
return p;
}
我的功能是从输入流中读取它,例如:
NodeT *createBinTree(int branch, NodeT *parent) {
if (branch == 0)
printf("Root identifier [0 to end] = ");
else
if (branch == 1)
printf("Left child of %d [0 to end] =", parent->id);
else
printf("Right child of %d [0 to end] =", parent->id);
scanf("%id", &id);
if (id == 0)
return NULL;
else {
p = (NodeT *)malloc(sizeof(NodeT));
if (p == NULL)
fatalError("Out of space in createBinTree");
p->id = id;
p->left = createBinTree(1,p);
p->right = createBinTree(2,p);
}
return p;
}
但似乎我真的不知道如何改造最新版本以便它可以从文件中读取。任何帮助都感激不尽。 我如何调用该函数:
NodeT *root;
root = createBinTree(0, NULL);
作为参考,我的data.in是:1 2 4 8 0 0 9 0 0 5 10 0 0 11 0 0 3 6 12 0 0 13 0 0 7 14 0 0 15 0 0。 请你好,我是新手。 :C