waarom dit Java-code niet werkt?

stemmen
0

Ik heb deze code fragment

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

Toen ik bellen met de insertfunctie als insert(5); insert(8);hij alwaty prints root is null.

wat is het probleem??

De vraag is gesteld op 17/01/2010 om 15:31
bron van user
In andere talen...                            


1 antwoorden

stemmen
8

Uw probleem is dat de rovariabele in de insertmethode is gewoon een kopie van de verwijzing naar bst.ro. Wat betekent dat als je reset de rovariabele binnen de methode, alleen de kopie van de referentie op het punt nieuwe ro , wordt de oorspronkelijk doorgegeven object hetzelfde blijven.

Uw vraag is de top 1 van het doorgeven van parameters FAQ. Ik heb zelf al beantwoord deze vraag meer dan eens. Check it out .

antwoordde op 17/01/2010 om 15:33
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more