2017-10-19 237 views
-1

System.NullReferenceException:對象不設置到對象的實例 的NullReferenceException

public int find(int value) { 
     Node curr = root; 
     while (curr != null) { 
      if (curr.value == value) { 
       return value;//success 
      } 
      if (curr.value < value) { 
       curr = curr.lChild; 
      } 
      if (curr.value > value) { 
       curr = curr.rChild; 
      } 
      if (curr.value == null) { 
       break; 
      } 
     } 
     return 0;//No Value 
    } 

我不能看到什麼錯與此二叉樹搜索

+5

如果curr.value

+0

請提供您的'Node'類(或最好是[mcve])和樣本輸入數據的代碼。 –

+0

把'if's改成'else if's –

回答

0

配置您使用的實現不使用需要考慮的情況是相互排斥的事實。如果遇到一起案件,可能會發生一項指控,破壞以下案件的先決條件。考慮下面的實現,它們明確地使得這些情況相互排斥。

public int find(int value) { 
    Node curr = root; 
    while (curr != null) { 
     if (curr.value == value) { 
      return value; 
     } 
     else if (curr.value < value) { 
      curr = curr.lChild; 
     } 
     else if (curr.value > value) { 
      curr = curr.rChild; 
     } 
     else if (curr.value == null) { 
      break; 
     } 
    } 
    return 0; 
} 
+0

我認爲這不重要,因爲*條件*是相互排斥的。如果'curr.value value'和'curr.value == null'必須計算爲'false',除非'curr.value'是一個覆蓋' >','<'和'=='。 –

+0

'else if(curr.value == null)' - 不能發生。值是一個'int'。 –

+0

@PaulKertscher如果'curr.value Codor