Java 我的树节点的NullPointerException
这是我的treenode的结构Java 我的树节点的NullPointerException,java,recursion,binary-tree,treenode,Java,Recursion,Binary Tree,Treenode,这是我的treenode的结构 class Node{ int value; Node left; Node right; public Node(int val){ this.value=val; } } 总而言之:我尝试构建一棵树。根是10,我尝试添加一个值为4的左子树 Node sub=new Node(10); sub.left.value=4; // line 1 sub.left=new Node(4)
class Node{
int value;
Node left;
Node right;
public Node(int val){
this.value=val;
}
}
总而言之:我尝试构建一棵树。根是10,我尝试添加一个值为4的左子树
Node sub=new Node(10);
sub.left.value=4; // line 1
sub.left=new Node(4); // line 2
为什么第1行不起作用而第2行起作用?
左
在声明或构造函数中都没有初始化。因此,当您调用sub.left.which
时,您会得到一个NPE,因为sub.left
在该点为空
重新排列第1行和第2行将有所帮助
为什么2号线可以独立工作
请注意,第2行是所有赋值
sub.left
被分配一个新节点,其值
被分配为4
在java中,如果不声明任何构造函数,JVM将创建没有参数的默认构造函数。但如果您使用参数声明构造函数,JVM将不会创建没有参数的默认构造函数。
第1行
sub.left.值=4;
你的班级还没有开始。所以它将是空的
第1行
sub.left=新节点(4)
您可以初始化类并为其赋值。所以不能为空。我将节点的值设置为4@developer033,而不是节点的值