Memoria y punteros en un BST

votos
0

En un árbol de búsqueda binaria que toma un objeto simple ..... al crear los métodos get y set para la izquierda, derecha, y el padre. Existen dudas acerca de lo que está sucediendo cuando se establece un nodo padre. Código abajo ...

El código:

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

El código de ejemplo que inspiró el código:

 public void setParent(Node parent) {
  this.parent = parent;
 }
Publicado el 14/11/2011 a las 02:47
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

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
    }
}
Respondida el 14/11/2011 a las 02:52
fuente por usuario

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