Отредактировано после примечания Алекса Таггарта ниже.Простой обход дерева и быстрый доступ к случайным узлам
Я использую молнию, чтобы легко перемещаться и редактировать дерево, которое может вырасти до многих тысяч узлов. Каждый узел является неполным, когда он сначала создается. Данные будут добавляться/удаляться все время в случайных позициях, листовые узлы будут заменены ветвями и т. Д.
Дерево может быть очень неуравновешенное. Быстрый случайный доступ к узлу также важен.
Реализация должна состоять в том, чтобы пересечь дерево с помощью застежки-молнии и создать хеш-таблицу узлов, проиндексированных ключом. Само собой разумеется, выше было бы крайне неэффективно, как: должны быть созданы
- 2 копии каждого узла должны быть последовательно отражается между структурами данных (2 дерева и HashMap).
Вкратце, есть ли эффективный способ времени/пространства для объединения легкости перемещения/обновления с помощью молнии и быстрого доступа к хеш-таблице в clojure?
Застежка-молния не является структурой данных, это способ перемещения и изменения структуры данных. Учитывая, что ваш вопрос не совсем понятен. Кроме того, «эффективный» не определен. –
«Эффективный», поскольку он не имеет нескольких копий того же самого, что есть в памяти и не требует обновления двух структур данных для каждого редактирования. – kliron