2014-02-17 55 views
0

到目前爲止我做了我的二叉樹,它可以添加節點你可以選擇哪個父母你想添加一個子節點,但問題是每當我刪除一個節點它刪除它,有時它說空指針異常,當我顯示我的節點它仍然存在。這是我的deletetion方法:二叉樹刪除說空指針

public void delete(Node node){ 
     if (node! =null) { 
      if(node.value.equals(nodeToDelete)) { 
       node=null; 
      } 
      delete(node.left); 
      delete(node.right); 
      } 
     } 
    } 

我已經定義我的節點,我的add方法,以及nodeToDelete是一個字符串和多數民衆提前

+0

下一次你問,格式化你的代碼,使它可讀。我現在已經爲你做了,但請在將來自己做。 – Zavior

+0

對不起,我只是用盡了時間 – user3262563

+0

'NPE'來自哪一行,它是一個單線程程序? – MrROY

回答

0

sometimes it say null pointer exception all.tnx。我認爲您的NPE僅在您的node沒有價值時才拋出。

你需要在這裏檢查你的代碼,你是如何定義你的value

if(node.value.equals(nodeToDelete)) { 
0

問題是你刪除你的節點,然後你嘗試刪除它的子節點。這會導致空指針異常。首先,您必須刪除這些孩子,然後刪除該節點。

我認爲二叉樹中的刪除操作稍微複雜一些。你應該考慮3種不同的情況:

  • 的節點是葉
  • 節點有一個孩子
  • 節點有兩個孩子

請閱讀Wikipedia article about binary tree並嘗試重新實現它。

0

當您第一次將節點設置爲空然後訪問此節點的某些部分時,NPE是靜態可預見的 - 因此,首先刪除這些子節點,然後將節點本身設置爲空。