Question

J'ai ce fragment de code

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);
  }
}

Quand j'appelle la fonction insert comme insert(5); insert(8); il imprime alwaty root is null.

Quel est le problème ??

Était-ce utile?

La solution

Votre problème est que variable ro dans la méthode de insert est juste une copie de la référence à bst.ro. Ce qui signifie que si vous reset la variable ro dans la méthode, juste la copie de la référence pointera nouveau ro, l'objet à l'origine passé restera le même.

Votre question est le top 1 de passage de paramètres FAQ. Je me suis déjà répondu à cette question plus d'une fois. Check it out .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top