У меня есть список слов. Например:
reel
road
root
curd
Я хотел бы хранить эти данные таким образом, который отражал бы следующую структуру:
Start -> r -> e -> reel
-> o -> a -> road
o -> root
c -> curd
Для меня очевидно, что мне нужно реализовать дерево. Из этого дерева я должен иметь возможность легко получать статистику, такую как высота узла, количество потомков узла, поиск узла и так далее.Добавление узла должно «автоматически» добавить его в правильную позицию в дереве, поскольку эта позиция уникальна.
Также хотелось бы иметь возможность визуализировать данные в виде фактического графического дерева. Поскольку дерево будет огромным, мне понадобятся элементы управления масштабированием/панорамированием визуализации. И, конечно же, красивая визуализация всегда лучше уродливой.
Кто-нибудь знает пакет Python, который позволил бы мне легко добиться всего этого? Самостоятельное написание кода займет довольно много времени. Как вы думаете, подойдет ли http://packages.python.org/ete2/для этой задачи?
Я использую Python 2.x, кстати.
Я обнаружил, что в NLTK есть класс trie — nltk.containers.trie. Мне это удобно, так как я уже пользуюсь NLTK. Кто-нибудь знает, как использовать этот класс? Нигде не могу найти примеры! Например, как добавить слова в дерево?