我有这个代码片段

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

有什么问题??

最佳答案

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

您的问题是“参数传递常见问题”的前1名。我本人已经多次回答了这个问题。 Check it out

关于java - 为什么这个Java代码不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2081297/

10-12 17:08