Может ли поле класса иметь переменное значение в зависимости от переменных других элементов?

Рейтинг: 0Ответов: 1Опубликовано: 31.10.2014

Есть элемент дерева, в нем одно из полей определяется в зависимости от полей левого и правого листа. Возможна ли такая реализация?

Ответы

▲ 4

Конечно. Для этого в элементе дерева должны быть ссылки на левый и правый листы.

UPD

Это должно быть примерно так:
Элемент дерева хранит в себе три ссылки - на предка и двух потомков, если дерево бинарное. Иначе будет массив потомков. У корня предок всегда пустой, есть метод append, который добавляет потомка, левого или правого. В этом методе, пользуясь ссылкой на предка, установим ему потомка, то есть добавляемый элемент. На псевдоджавакоде примерно так:

   class Elem {

        Elem root;
        Elem left;
        Elem right;
        Value value;

        void append(Value value, Side side){
            Elem elem = new Elem();
            elem.value = value;
            if(side == Left)
                this.left = elem;
            else 
                this.right = elem;

            elem.root = this;
        }
    }

Разумеется, если потомков может быть больше двух, то надо использовать массив и вторым параметром в append будет что-то вроде индекса.

UPD UPD

Надеюсь, идея ясна, а то я тот ещё объясняльщик.