Память и указатели в BST

голоса
0

В бинарном дереве поиска, который принимает простой объект ..... при создании методов получения и установок для левых, правых и родителей. Есть опасения по поводу того, что происходит, когда родительский узел установлен. Код ниже ...

Код:

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

Пример кода, который вдохновил код:

 public void setParent(Node parent) {
  this.parent = parent;
 }
Задан 14/11/2011 в 02:47
источник пользователем
На других языках...                            


1 ответов

голоса
2

Вы создаете то, что, по сути клон родительского объекта. Это отличается от простого сохранения указателя на родительский объект.

Очевидно, что вы будете принимать больший объем памяти, дублируя родительский объект. Что еще более важно, вы не дублировать ссылки на родителя. Так что если вы попытаетесь пройти через дерево, перейти к родителю узла, а затем попытаться посетить его другие ребенок, вы рисуете кучу нулевых указателей.

this.parentЯвляется ссылкой текущего объекта parentуказателя.

Это на самом деле не означает , что thisявляется родителем. На самом деле, this.parentиспользуется , чтобы отличить локальный parentуказатель от входящего параметра 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
    }
}
Ответил 14/11/2011 в 02:52
источник пользователем

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