Разбор список слов в дерево

У меня есть список слов. Например:

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. Кто-нибудь знает, как использовать этот класс? Нигде не могу найти примеры! Например, как добавить слова в дерево?

5
задан Kev 12 July 2012 в 11:42
поделиться