我正在编写二进制搜索树代码。在我的Bst类中,我有一个完美的AddNodes函数和一个使用递归的InOrderTraversal函数。但是这个函数给了我一个空指针异常,我不知道为什么。帮助将不胜感激:) 在此先感谢:)
编辑:" System.out.print("" + current.data)发生空指针异常;"线
public void InOrderTraversal(Node temp)
{
if(temp != null)
{
InOrderTraversal(temp.LeftChild);
System.out.print(" " + current.data);
InOrderTraversal(temp.RightChild);
}
}
主要是:
public static void main(String[] args)
{
Bst tree = new Bst();
tree.AddNode(4);
tree.AddNode(7);
tree.AddNode(3);
tree.AddNode(5);
tree.InOrderTraversal(tree.root);
}
答案 0 :(得分:1)
System.out.print(" " + current.data);
行发生空指针异常
以下行的唯一方法
System.out.print(" " + current.data);
如果NullPointerException
等于current
,可能会抛出null
。
Maby您打算将参数命名为current
:
public void InOrderTraversal(Node current)
{
if(current != null)
{
InOrderTraversal(current.LeftChild);
System.out.print(" " + current.data);
InOrderTraversal(current.RightChild);
}
}
答案 1 :(得分:0)
您正在遍历树,但未将当前选定的节点分配给任何内容。 current
为空,因为它永远不会被分配。
答案 2 :(得分:0)
应该是:
System.out.print(" " + temp.data);
您不指定无处当前节点。