从C

时间:2015-12-01 14:56:15

标签: c binary-tree

首先,我试图从文件中读取二叉树(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

0 个答案:

没有答案