我正在尝试使用Node作为嵌套类将节点插入到我的树中。我无法弄清楚为什么tree.root
不会使用我的方法insertNode
public class Tree {
Node root;
private class Node {
int value;
Node(int value) {
this.value = value;
}
}
public static void main(String[] args) {
Tree tree = new Tree();
tree.insertNode(4, tree.root);
System.out.println(tree.root);
}
public void insertNode(int value, Node n){
if(n == null ){
n = new Node(value);
}
}
}
>> null
我错过了什么? 谢谢你的帮助
答案 0 :(得分:2)
您的代码的作用如下:
Tree
。 root
Node
将由编译器初始化为默认值null
。Tree
中的某些内容至少这是方法名称所暗示的内容。实际上,除了将参数设置为默认值(如果它为null)之外,该方法不执行任何操作。root
Node
的{{1}} Tree
。我认为您应该更改null
方法,以便它实际修改insertNode
的状态。
编辑:当我读到你的问题下面的评论时,我注意到我最初错过了一些内容。在您的Tree
方法中,您可能打算完全按照上面的描述进行操作。但你所做的是不同的东西:你将一些东西分配给一个局部变量而不是一个成员变量。用明确的符号写成你想要这样做:
insertNode
不同之处在于,您的代码this.root = new Node(value)
未绑定到对象,但n
意味着Tree.root
的更改(更确切地说,分配)将不会持久且无效当方法返回时。如果您将对象分配给n
,则此更改将反映在Tree.root
对象中。