,当我与所谓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,而是搜索停止的方式。 –