por qué este código de Java no funciona?

votos
0

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 insertfunción como insert(5); insert(8);se alwaty impresiones root is null.

¿¿Cuál es el problema??

Publicado el 17/01/2010 a las 15:31
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
8

Su problema es que la rovariable dentro del insertmétodo es simplemente una copia de la referencia a bst.ro. Lo que significa que si se restablece la rovariable dentro del método, sólo la copia de la referencia apuntará la 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 .

Respondida el 17/01/2010 a las 15:33
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more