Я использую composite pattern для реализации древовидной структуры. Он имеет 3 класса: узел (базовый класс), лист (без дочернего класса) и ветвь (с классом children). И у меня есть некоторые общие данные, помещенные в узел дерева, например корень. Примером общих данных является выбор единицы измерения или километр. Общие данные должны быть доступны для всех узлов. Как его реализовать? Помещение указателя на общие данные ко всем узлам не кажется эффективным с точки зрения памяти.Как получить атрибут ansestor в древовидной структуре?
1
A
ответ
1
Один из способов сделать это - добавить отдельный класс для дерева, поместить там указатель root
и добавить туда все общие предметы. Затем добавьте tree
указатель на node
базовый класс, а также добавить аргумент конструктора, чтобы указать все узлы дерева обратно в их tree
объекта:
class node;
class tree {
node *root;
int multiplier; // e.g. 1000 for meters, 1 for kilometers
}
class node {
protected:
tree *owner;
node *parent; // parent is NULL for the root
node(tree *_owner, node *_parent) : owner(_owner), parent(_parent) {}
};
class branch : public node {
list<node> children;
public:
branch(tree *_owner, node *_parent) : node(_owner, _parent) {}
...
};
Смежные вопросы
- 1. Pathname в древовидной структуре
- 2. Анализ строки в древовидной структуре?
- 3. Итоговые документов в древовидной структуре
- 4. список Выход в древовидной структуре
- 5. D3: Гиперссылки в древовидной структуре
- 6. Поиск узла в древовидной структуре
- 7. Как добавить идентификатор в древовидной структуре
- 8. Отображение данных в древовидной структуре
- 9. Устройте JSON в древовидной структуре
- 10. Как организовать данные в древовидной структуре?
- 11. Как использовать выбранную запись в древовидной структуре
- 12. Как выбрать элемент в древовидной структуре?
- 13. Как показать категории в древовидной структуре
- 14. Как ограничить дочерние узлы в древовидной структуре
- 15. Как получить все дочерние элементы нескольких узлов в древовидной структуре?
- 16. Как получить все дочерние узлы в древовидной структуре YUI
- 17. Реализация IEnumerable по древовидной структуре
- 18. Список каталогов и файлов в древовидной структуре
- 19. Стоимости/Количество Rollup В древовидной структуре - Python
- 20. Скрыть строки на древовидной структуре - openerp 7
- 21. Глубина в древовидной структуре в BigQuery
- 22. Дисплей ArrayList данных в древовидной структуре Java
- 23. Получение всех возможных путей в древовидной структуре
- 24. Прямое резервирование памяти в древовидной структуре
- 25. Пользовательские итератор на древовидной структуре в C++
- 26. Лучший способ выяснить шаблон в древовидной структуре
- 27. Контроль доступа RBAC в древовидной структуре
- 28. Вычислить индекс для листьев в древовидной структуре
- 29. Обновление узлов JavaFX в древовидной структуре
- 30. Python - сопоставление зависимостей заданий в древовидной структуре