2015-11-30 83 views
-4

我試圖在BST中創建刪除功能。 當我嘗試刪除指針時出現此錯誤。 Click to see the image從BST中刪除C

void delete(Node** root, int data) { 
    if((*root) == NULL) 
     return; 
    else if(data < (*root)->data) 
     delete(&(*root)->left, data); 
    else if(data > (*root)->data) 
     delete(&(*root)->right, data); 
    else { 
     printf("%d\n", (*root)->data); 
     // case 1 
     if((*root)->left == NULL && (*root)->right == NULL) { 
      free((*root)); 
      printf("wssal"); 
     } 
    } 

} 

Problem view

[1]: http://i.stack.imgur.com/42K5L.png 
+1

你說,「這個錯誤」,但不描述任何錯誤。 –

+0

點擊鏈接「問題視圖」 – XPRO

+1

請提供[最小完整和可驗證示例](https://stackoverflow.com/help/mcve)。將鏈接發佈到外部圖片並不是一種好的形式。只需將描述中的輸出作爲文本粘貼到問題中即可。 – kaylum

回答

1

delete功能不更新樹結構,以反映一個事實,即刪除的節點在樹不再。所以你要離開樹,包括指向不再存在的節點的指針。

+0

完美,我可以得到目標節點的父母刪除,所以我可以刪除左邊的指針或德右? – XPRO

+0

@XPRO你可以通過再次行走樹來獲得它。或者你可以通過在每個節點中包含一個指向其父節點的指針來獲得它。您可以在遍歷過程中記住它。 –