,當我與所謂RedBlackTree的二叉樹類的替代版本工作增加新的節點。我試圖用這種添加方法來構建樹。如何建立二叉樹
public void Add(T val)
{
RedBlackNode<T> newNode = _rootNode;
while(newNode != null)
{
if(val.CompareTo(newNode.Data) < 0)
{
newNode = newNode.LeftChild;
}
else if(val.CompareTo(newNode.Data) >= 0)
{
newNode = newNode.RightChild;
}
}
newNode.Data = val; //nullReferenceException thrown here <---
newNode.IsBlack = false;
FixColors(newNode);
}
_rootNode是給出樹的根的私有字段。按照具體說明給出它初始化爲空。這個Add方法是從另一個類中從正在讀取文件信息的方法中調用的。在第一次迭代中,拋出了一個nullReferenceException,我假設因爲我試圖改變的節點是空的。我不知道我應該如何改變這些節點的數據值。如有必要,我會將代碼發佈到程序的其餘部分。
您需要檢查_rootNode是否爲空。如果是這樣,使用新的關鍵字創建一個節點,並將其分配給_rootNode並退出此功能 – Partha
@Partha爲什麼?當'newNode'爲空時,代碼只能達到這一點。 –
雖然我認爲這是[什麼是NRE以及如何解決它]的重複(http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-修復它)實際上這是不同的問題,因爲OP明確地發現空 - 所以問題不是NRE,而是搜索停止的方式。 –