用java构造二叉树
我正在尝试用java实现二叉树 这是我的二叉树实现代码。我遇到一个错误,请帮助: 给你用java构造二叉树,java,nullpointerexception,Java,Nullpointerexception,我正在尝试用java实现二叉树 这是我的二叉树实现代码。我遇到一个错误,请帮助: 给你 public static class Binarytree{ Node root; public Binarytree(){ } public void addnode(int data){ Node newnode = new Node(data); if(root==null)
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);
}
inline coming.right=newnode;
我不知道怎么了。请帮助问题出在这段代码中:
if(coming == null)
{
coming.right = newnode;
return;
}
如果对象引用coming为null,则不能引用coming.right,因为null引用不指向实际对象。如果没有实际对象,则不能引用对象字段,如right。如果您试图使用空的引用或指针执行某些操作,那么Java将抛出一个NullPointerException,正如您在本例中看到的那样
您需要做的是创建一个实际的节点对象,并将其分配给即将到来的引用,然后您将能够在即将到来的时候引用该对象的右字段。右
请注意,您将遇到与以ifcoming==null开头的第一个块完全相同的错误,因为它在coming为null时尝试引用coming.left。coming为null。只有当coming为null时,才执行该行,尝试访问null对象的属性会导致问题如果coming为null,则您已检查无法访问此变量的属性。
if(coming == null)
{
coming.right = newnode;
return;
}