Вот повторение довольно загадочного заглавного вопроса:
Предположим, у нас есть построенное дерево Prototype , которое содержит всю информацию о структуре дерева и об общемописание каждого узла.Теперь мы хотим создать экземпляры этого дерева с элементами, которые содержат дополнительные уникальные данные.Давайте назовем эти Конкретные деревья.
Единственная разница между Конкретными и Прототипом деревьев - это дополнительные данные в узлах Бетон дерево.Предположим, что каждый узел дерева Concrete имеет указатель / ссылку на соответствующий элемент в дереве Prototype для общей информации об узле, но не имеет собственной родительской / дочерней информации:
Можно ли пройти через Бетонное дерево?
В частности, при наличии начального узла в Бетонном дереве и пути через дерево Прототипов возможно лиэффективно получить соответствующий узел в бетонном дереве?Может быть много бетонных деревьев, поэтому обратная связь с деревом прототипов невозможна.
Даже если мне не нужно оптимизировать вещи до такой степени в моем коде, это все ещеинтересная проблема!
Заранее спасибо!
ПРИМЕЧАНИЕ: Нет ограничений по фактору ветвления дерева - узел может иметь от одного до сотен дочерних элементов.
Дополнительные рассуждения / идеи:
Причина, по которой я спрашиваю, состоит в том, что кажется, что было бы бесполезно копировать информацию о родителе / ребенке каждый разсоздается новый экземпляр Бетонного дерева, поскольку эта структура идентична дереву прототипа.В моем конкретном случае дочерние элементы идентифицируются по строковым именам, поэтому я должен хранить хеш-строку-указатель на каждом узле.Может быть много экземпляров Бетонных деревьев, и дублирование этого хеша кажется огромной тратой пространства.
В качестве первой идеи, возможно, путь может быть каким-то образом хеширован в int или что-то ещекоторый компактно идентифицирует элемент (не строку, поскольку он слишком большой), который затем используется для поиска конкретных элементов в хешах для каждого конкретного дерева?