Memoria e puntatori in un BST

voti
0

In un albero binario di ricerca che prende un oggetto semplice ..... quando si creano i metodi getter e setter per la sinistra, a destra, e genitore. Ci sono preoccupazioni per quanto sta accadendo quando un nodo padre è impostato. Codice muggito ...

Il codice:

 public void setParent(Person parent) {
  parent = new Person( parent.getName(), parent.getWeight());

Il codice di esempio che ha ispirato il codice:

 public void setParent(Node parent) {
  this.parent = parent;
 }
È pubblicato 14/11/2011 alle 02:47
fonte dall'utente
In altre lingue...                            


1 risposte

voti
2

Si sta creando ciò che è essenzialmente un clone dell'oggetto padre. Questo è diverso da solo salvare il puntatore all'oggetto genitore.

Ovviamente, prenderete più spazio di memoria duplicando l'oggetto padre. Ancora più importante, non si sta duplicando i riferimenti del genitore. Quindi, se si tenta di attraversare l'albero, andare al genitore di un nodo, quindi provare a visitare i suoi altri bambini, si disegna una serie di puntatori nulli.

La this.parentè un riferimento dell'oggetto corrente parentpuntatore.

Essa in realtà non vuol dire che thisè un genitore. Infatti, this.parentviene utilizzata per distinguere il locale parentpuntatore dal parametro in ingresso parent.

class Person{
    Person parent; // <---- this is the "this.parent" attribute, and is initially undefined
    public void setParent(Person parent){ // <---- the "Person parent" on this line is an incoming parameter
        this.parent = parent; //<---- "this.parent" refers to the attribute, and "parent" refers to the parameter
    }
}
Risposto il 14/11/2011 a 02:52
fonte dall'utente

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