Por que esse código Java não funciona?
-
21-09-2019 - |
Pergunta
Eu tenho 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);
}
}
Quando eu chamo o insert
função como insert(5); insert(8);
ele está sempre impressa root is null
.
qual é o problema??
Solução
Seu problema é que ro
variável dentro do insert
o método é apenas uma cópia da referência a bst.ro
. O que significa que se você Redefinir a ro
variável dentro do método, apenas a cópia da referência apontará o novo ro
, o objeto aprovado originalmente permanecerá o mesmo.
Sua pergunta é o 1 top 1 do parâmetro que passa por perguntas frequentes. Eu mesmo já respondi a essa pergunta mais de uma vez. Confira.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow