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??

Foi útil?

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
scroll top