2017-10-19 219 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