我有这段代码片段
class bst {
public node root=null;
bst() {
root=null;
}
public void insert(int data) {
insert(this.root,data);
}
private void insert(node ro,int data) {
if (ro==null) {
print ("root is null");
ro=new node(data);
} else if (data>ro.data)
insert(ro.right,data);
else
insert(ro.left,data);
}
private void print (String str)
{
System.out.println(str);
}
}
当我调用像insert
这样的insert(5); insert(8);
函数时,它会打印root is null
。
问题是什么?
答案 0 :(得分:8)
您的问题是ro
方法中的insert
变量只是对bst.ro
的引用的副本。这意味着如果您重置方法中的ro
变量,只需引用的副本将指向 new ro
,即最初传递的对象将保持不变。
您的问题是参数传递常见问题解答的前1位。我自己已经不止一次地回答了这个问题。 Check it out