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