Mémoire et pointeurs dans un BST

voix
0

Dans un arbre de recherche binaire qui prend un objet simple ..... lors de la création des méthodes getter et setter pour la gauche, à droite, et le parent. Il y a des préoccupations au sujet de ce qui se passe quand un nœud parent est défini. Code ci-dessous ...

Le code:

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

Le code exemple qui a inspiré le code:

 public void setParent(Node parent) {
  this.parent = parent;
 }
Créé 14/11/2011 à 02:47
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Vous créez ce qui est essentiellement un clone de l'objet parent. Ceci est différent de sauver juste le pointeur vers l'objet parent.

De toute évidence, vous allez prendre plus d'espace mémoire en dupliquant l'objet parent. Plus important encore, vous n'êtes pas double emploi avec les références du parent. Donc, si vous essayez de traverser l'arbre, allez au parent d'un nœud, puis essayez de visiter ses autres enfants, vous dessinez un tas de pointeurs nuls.

Le this.parentest une référence à l'objet courant parentdu pointeur.

Cela ne signifie pas que fait thisest un parent. En fait, this.parentest utilisé pour distinguer local parentpointeur du paramètre entrant 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
    }
}
Créé 14/11/2011 à 02:52
source utilisateur

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