2012-03-17 105 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)編譯引用。這應該可以解決你的崩潰。