de ce acest cod java nu funcționează?

voturi
0

Am acest fragment de cod

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

Când eu numesc insertfuncția ca insert(5); insert(8);ea alwaty amprente root is null.

care este problema??

Întrebat 17/01/2010 la 15:31
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
8

Problema ta este ca rovariabilă în interiorul insertmetodei este doar o copie a trimiterii la bst.ro. Ceea ce înseamnă că , dacă ați resetatro variabila din interiorul metodei, doar copia de referință va indica nou ro , obiectul a trecut inițial vor rămâne aceleași.

Întrebarea dumneavoastră este top 1 al parametrului FAQ Pase. M - am răspuns deja la această întrebare mai mult decât o dată. Verifică - l .

Publicat 17/01/2010 la 15:33
sursa de către utilizator

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