| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > алгоритм поиска элемента одного дерева в другом |
| Автор: tonchitos 18.3.2008, 16:28 |
| у меня два дерева. Одно дерево как структура данных, другое как графическая. Деревья одинаковы, те имеют одинаковую структуру и имена. В одном дереве выбран какой-то потомок. Нужно найти этого потомка в другом дереве. например. Node1 Node11 Node111 Node1111 Node12 Node 121 Node13 Node131 Node1311 Node1312 Node132 Node2 Node3 Node1 Node11 Node111 Node1111 Node12 Node 121 Node13 Node131 Node1311 Node1312 Node132 Node2 Node3 вот предположим этого потомка надо найти. Предположим имена в разных ветках могут совпадать, но не могут совпадать 2 ветки одного уровня.те у одного родителя не может быть 2х детей с одинаковыми именами. как блин. Рекусия, вроде, но точнее не соображу. |
| Автор: Sardar 18.3.2008, 16:48 | ||
| Какова задача в оригинале (в смысле откуда деревья)? Если деревья выполнены простыми ссылками родитель:[потомки], то просто построй путь от искомой ноды (решение "в лоб"):
Если есть некий уникальный признак, то можно его положить в хеш, доступ почти мгновенный. Если дерево снабдить счётчиками (читать NestedSet), то ноду можно точно указать по паре чисел, тогда целый шаг с постройкой обратного пути не нужен. Вообщем тут обширное поле для оптимизации |