2014-03-26 163 views
1

請幫忙。我的下面的刪除功能有什麼問題。似乎無法解決它從二叉樹中刪除節點

我似乎得到一個錯誤: 類聲明似乎很好。主要的問題是有這個remove函數工作

void binaryTree::Remove(int) { 
    if (node != NULL) 
    { 
    Node* tmptr = node; 
    int rootdata = node->data; 
    /int rSubtree; 
    } 
    { 
    // Case 0- no child 
    if (node->lChild == NULL && node->rChild == NULL) 
    { 
     node = NULL; 
     //parent-   //set the parent of the node to NULL 
     delete node; 
    } 
    // has one child 
    else if (node->lChild == NULL && node->rChild != NULL) 
    { 
     node = node->rChild; 
     node->rChild = NULL; 
     delete node; 
    } 

    else if (node->lChild != NULL && node->rChild == NULL) 
    { 
     node = node->lChild;`enter code here` 
     node->lChild = NULL; 
     delete node; 
    } 
} 
+1

什麼是錯誤? – Gareth

+0

你是否覆蓋瞭如果你有2個子節點會發生什麼? – 109

+0

解除分配過程應該向後完成,它將避免錯誤或處理仍然需要的項目 – Sherlock

回答

1

嘗試更換node = NULLdelete node;否則你想刪除NULL。

+0

根本不需要執行'node = NULL' - 除非'node'是一個引用,在這種情況下它實際上是有意義的。否則它不會。 –