Frage

Ich habe dieses Codefragment

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

Wenn ich rufe die insert Funktion wie insert(5); insert(8); es alwaty druckt root is null.

Was ist das Problem ??

War es hilfreich?

Lösung

Ihr Problem ist, dass ro Variable innerhalb der insert Methode wird nur eine Kopie des Verweises auf bst.ro. Was bedeutet, dass, wenn Sie Reset die ro Variable in der Methode, nur die Kopie der Referenz auf das neu markierten Punkt ro, die ursprünglich übergebene Objekt wird gleich bleiben.

Ihre Frage ist die Besten 1 aus Parameterübergabe FAQ. Ich selbst diese Frage bereits beantwortet mehr als einmal. Check it out .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top