二叉树不会从文件重建

时间:2012-03-17 14:29:19

标签: c++ codeblocks

我是数据结构的新手,我们被指派使用二叉树实现制作猜谜游戏。我已经完成了没有文件实现的程序流程。我已经将二叉树预先保存在外部文件上,现在我在从文件重建树时遇到问题 在我的文件中我有:

  

是Angel Locsin吗?:#Neneng B?Sam Pinto? ##白美人?是吗?   玛丽安里维拉? ## HotandSexy?是Cristine Reyes吗? ###

“#”用于NULL节点。

我也有我的代码。我遵循教授给我的算法。我在互联网上搜索并给了我相同的算法,就像我的教授说的那样。我的问题是程序崩溃的每三个非空数据。我认为崩溃的主要原因是在插入第三个非空数据后未设置为null的节点。如果是这样,我怎么能把它设置为NULL,这样我的程序就不会崩溃。我将文件中的数据分配到字符串数组中,并在数组的最后一个索引处设置一个“\ 0”。

void read(node *temp)
{
    while(array[j]=="#")
        j++;

    if(array[j]=="\0")
        return;

    node *nNode;
    nNode = new node;
    nNode->yes=NULL;
    nNode->no=NULL;
    nNode->data=array[j];
    j++;
    temp=nNode;
    read(temp->yes);
    read(temp->no);
}

1 个答案:

答案 0 :(得分:0)

您的问题在于您的读取功能的定义。我想这个想法是“temp”是“node *”类型的输出参数。但这不是你写的。 您需要有一个指针或对“node *”参数的引用,例如这样:

void read(node** temp)

然后调整代码的其余部分,以便通过适当的(de)引用进行编译。这应该解决你的崩溃。