Estás creando lo que es esencialmente un clon del objeto padre. Esto es diferente a simplemente guardar el puntero al objeto padre.
Obviamente, que va a tomar más espacio de memoria mediante la duplicación del objeto padre. Más importante aún, usted no está duplicando las referencias de los padres. Así que si usted trata de recorrer el árbol, vaya al padre de un nodo, a continuación, tratar de visitar sus otros hijos, se dibuja un montón de punteros nulos.
El this.parentes una referencia al objeto actual del parentpuntero.
En realidad, no quiere decir que thises uno de los padres. De hecho, this.parentse utiliza para distinguir el local de parentpuntero a partir del parámetro de entrada 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
}
}