Domanda

Ho questo frammento di codice

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 chiamo la funzione insert come insert(5); insert(8); esso stampa alwaty root is null.

che cosa è il problema ??

È stato utile?

Soluzione

Il tuo problema è che variabile ro all'interno del metodo insert è solo una copia del riferimento alla bst.ro. Il che significa che se si Ripristina la variabile ro all'interno del metodo, solo la copia del riferimento sarà puntare il nuovo ro, l'oggetto originariamente passato rimarrà la stessa.

La tua domanda è il top 1 di passaggio dei parametri FAQ. Io stesso già risposto a questa domanda più di una volta. Check it out .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top