我正在尝试在java中实现二叉树
这是我的二叉树实现的代码。我得到一个错误,请帮助:
在这里它
public static class Binarytree{
Node root;
public Binarytree(){
}
public void addnode(int data){
Node newnode = new Node(data);
if(root==null)
root = newnode;
else
{
Node coming = root;
while(true){
if(data<coming.data)
{ coming = coming.left;
if(coming==null)
{ coming.left = newnode;
return;
}
}
else{
coming = coming.right;
if(coming==null)
{ coming.right = newnode; // Error
return;
}
}
}
}
}
}
public static class Node{
int data;
Node left;
Node right=null;
Node(int data){
this.data = data;}
}
public static void main(String[] args) {
Binarytree so = new Binarytree();
so.addnode(2);
so.addnode(42); // Error
so.addnode(22);
so.addnode(12);
so.addnode(21);
so.addnode(20);
}
我收到错误:
Exception in thread "main" java.lang.NullPointerException
在coming.right = newnode;
行中
我不知道什么是错的。
请帮忙
答案 0 :(得分:2)
问题在于这段代码:
if(coming == null)
{
coming.right = newnode;
return;
}
如果对象引用coming
为null
,则您无法引用coming.right
,因为null
引用未指向实际对象。如果没有实际对象,则无法引用right
等对象字段。如果您尝试使用null
的引用(或指针)执行某些操作,那么Java将在您的情况下抛出NullPointerException
。
您需要做的是创建一个实际的Node
对象并将其分配给引用coming
,然后您将能够引用该对象的字段right
coming .right
。
请注意,开始if(coming == null)
的第一个块会引发完全相同的错误,因为当coming.left
为coming
时,它会尝试引用null
。