Я реализую trie для интеллектуального ввода текста в VB.NET - в основном автозаполнение в отношении использования trie. Я сделал свою trie рекурсивную структуру данных, основанную на общем классе словаря.Trie Implementation Question
Это в основном:
class WordTree Inherits Dictionary(of Char, WordTree)
Каждая буква в слове (все верхний обсаженной) используется в качестве ключа к новому WordTrie. Нулевой символ на листе указывает на завершение слова. Чтобы найти слово, начинающееся с префикса, я иду по три, насколько мой префикс идет, а затем собирает все детские слова.
Мой вопрос в основном о реализации самого трии. Я использую функцию хеш-словаря для ветвления моего дерева. Я мог бы использовать список и выполнять линейный поиск по списку или делать что-то еще. Что тут плавное движение? Является ли это разумным способом для моего разветвления?
Спасибо.
Update:
Просто чтобы прояснить, я в основном с просьбой, если словарь ветвления подход явно уступает какой-то другой альтернативы. Приложение, в котором я использую эту структуру данных, использует только буквы верхнего регистра, поэтому, возможно, подход массива является лучшим. Я мог бы использовать одну и ту же структуру данных для более сложной ситуационной ситуации в будущем (больше символов). В этом случае похоже, что словарь - это правильный подход - вплоть до того, что мне нужно использовать что-то более сложное в целом.
это просто a-z? т.е. нет интернационализации – MarkJ
Да, всего 26 букв плюс нулевой символ. – Steve
Можете ли вы предоставить больше отзывов, чтобы мы могли полностью ответить на вопрос? – sfossen