为什么这个java代码不起作用?

时间:2010-01-17 14:31:01

标签: java binary-search-tree

我有这段代码片段

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

问题是什么?

1 个答案:

答案 0 :(得分:8)

您的问题是ro方法中的insert变量只是对bst.ro的引用的副本。这意味着如果您重置方法中的ro变量,只需引用的副本将指向 new ro,即最初传递的对象将保持不变。

您的问题是参数传递常见问题解答的前1位。我自己已经不止一次地回答了这个问题。 Check it out