por qué este código de Java no funciona?
-
21-09-2019 - |
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 ??
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