Paměť a ukazatele v BST

hlasů
0

V binárním vyhledávacím stromu, který bere jednoduchý objekt ..... při vytváření mechanismů získání a nastavení metody pro levé, pravé a rodičem. Existují obavy o tom, co se děje, když je nastaven nadřazený uzel. Kód níže ...

Kód:

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

Příklad kódu, která inspirovala kód:

 public void setParent(Node parent) {
  this.parent = parent;
 }
Položena 14/11/2011 v 02:47
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Budete vytvářet co je v podstatě klon nadřazeného objektu. To se liší od právě uložením ukazatel nadřazeného objektu.

Je zřejmé, že budete brát větší prostor v paměti tím, že kopíruje nadřazeného objektu. Ještě důležitější je, že nejste duplikování odkazy rodiče. Takže pokud se pokusíte procházet strom, jděte na rodiče uzlu, pak zkuste navštívit své ostatní děti, kreslení spoustu ukazatele null.

this.parentJe odkaz na aktuální objekt je parentukazatel.

To není ve skutečnosti znamenat, že thisje rodič. Ve skutečnosti this.parentje používán rozlišovat místní parentukazatel z příchozí parametru 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
    }
}
Odpovězeno 14/11/2011 v 02:52
zdroj uživatelem

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