Pregunta

tengo este fragmento de código

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);
  }
}

Cuando llamo a la función insert como insert(5); insert(8); que alwaty imprime root is null.

¿Cuál es el problema ??

¿Fue útil?

Solución

Su problema es que la variable ro dentro del método insert es sólo una copia de la referencia a bst.ro. Lo que significa que si restablecer la variable ro dentro del método, sólo la copia de la referencia señalará el nueva ro, el objeto pasado originalmente seguirá siendo el mismo.

Su pregunta es la parte superior del 1 de parámetros de traspaso de preguntas frecuentes. Yo mismo ya he respondido a esta pregunta más de una vez. Compruébelo usted mismo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top