2012-03-17 72 views
0

我是新的数据结构,我们被分配使用二叉树实现猜谜游戏。我已经完成了没有文件实现的程序流程。我已经preorderly上的外部文件现在保存在二叉树我有我的文件从文件 重建树的问题,我有:二叉树不从文件重建

它是安杰尔·洛辛:?#Neneng B是它萨姆·平托? ## White Beauty?是不是 Marian Rivera? ## HotandSexy?是Cristine Reyes吗? ###

“#”用于NULL节点。

我也有我的代码。我遵循我的教授给我的算法。我在互联网上搜索,并给了我相同的算法,我的教授说。我的问题是程序崩溃的每三分之一的非空数据。我认为崩溃的主要原因是在插入第三个非空数据后未设置为null的节点。如果是这样,我怎么能将它设置为NULL,以便我的程序不会crash.I将数据从文件分配到字符串数组中,并在数组的最后一个索引处设置“\ 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); 
} 

回答

0

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

void read(node** temp)

然后调整代码,使得是的其余部分由合适的(de)编译引用。这应该可以解决你的崩溃。