Вопрос

У меня есть этот фрагмент кода

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, первоначально переданный объект останется прежним.

Ваш вопрос входит в число первых часто задаваемых вопросов по передаче параметров.Я сам уже не раз отвечал на этот вопрос. Проверьте это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top