为什么这个java代码不工作?

为什么这个java代码不工作?,java,binary-search-tree,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

我有这个代码片段

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);
  }
}
当我调用insert5这样的insert函数时;插入8;它总是打印根为空

问题是什么???

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


您的问题是参数传递FAQ的前1个问题。我自己已经不止一次地回答了这个问题

下次,请确保您的帖子可读。那段代码乱七八糟,而且因为你发布的是引文,你甚至没有得到语法突出显示。你应该学会更好地缩进你的代码!insert不是一个函数,它是一个方法。Java是按值传递的,而不是按引用传递的。无论如何,方法是一个成员函数