Тройное дерево поиска — это специальная структура данных дерева, в которой дочерние узлы стандартного дерева дерева упорядочены как двоичное дерево поиска.
Представление троичных поисковых деревьев:
В отличие от стандартной (стандартной) структуры данных, где каждый узел содержит 26 указателей для своих дочерних элементов, каждый узел в троичном дереве поиска содержит только 3 указателя:
1. Левый указатель указывает на узел, значение которого меньше значения в текущем узле.
2. Равный указатель указывает на узел, значение которого равно значению в текущем узле.
3. Правый указатель указывает на узел, значение которого больше, чем значение в текущем узле.
Помимо трех вышеупомянутых указателей, у каждого узла есть поле для указания данных (символ в случае словаря) и другое поле для обозначения конца строки.
Таким образом, более или менее это похоже на BST, который хранит данные в некотором порядке. Однако данные в троичном дереве поиска распределяются по узлам. Например, для хранения слова «Geek» нужны 4 узла.
На рисунке ниже показано, как именно хранятся слова в троичном дереве поиска.

Одним из преимуществ использования троичных деревьев поиска по сравнению с попытками является то, что троичные деревья поиска более экономичны (задействуют только три указателя на узел по сравнению с 26 указателями в стандартных попытках). Кроме того, троичные деревья поиска могут использоваться каждый раз, когда для хранения строк используется хеш-таблица.
Попытки подходят, когда есть правильное распределение слов по алфавиту, чтобы пробелы использовались наиболее эффективно. В противном случае троичные поисковые деревья лучше. Тернарные деревья поиска эффективны в использовании (с точки зрения пространства), когда строки, подлежащие сохранению, имеют общий префикс.
Приложения троичных поисковых деревьев:
1. Тернарные деревья поиска эффективны для запросов типа «По заданному слову найти следующее слово в словаре (поиск ближайших соседей)» или «Найти все телефонные номера, начинающиеся с 9342, или« при вводе нескольких начальных символов в веб-браузере отображаются все веб-сайты. имена с этим префиксом »(функция автозаполнения)».
2. Используется при проверке орфографии: деревья троичного поиска могут использоваться как словарь для хранения всех слов. Как только слово набрано в редакторе, его можно параллельно искать в дереве троичного поиска, чтобы проверить правильность написания.
Реализация:
Ниже приведена реализация троичного дерева поиска. Реализованные операции: поиск, вставка и обход.
|
Выход:
Following is traversal of ternary search tree bug cat cats up Following are search results for cats, bu and cat respectively Found Not Found Found
Сложность времени: временная сложность операций троичного дерева поиска аналогична сложности двоичного дерева поиска. т.е. операции вставки, удаления и поиска занимают время, пропорциональное высоте троичного дерева поиска. Пространство пропорционально длине строки, которая будет сохранена.
Ссылка:
http://en.wikipedia.org/wiki/Ternary_search_tree
Эта статья составлена Aashish Barnwal и рецензирована командой GeeksforGeeks. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Турнирное дерево (Winner Tree) и бинарная куча
- Трие | (Вставить и найти)
- AVL Tree | Набор 1 (вставка)
- AVL Tree | Набор 2 (удаление)
- Поиск по шаблону с использованием дерева суффиксов
- Сегментное дерево | Набор 1 (сумма заданного диапазона)
- Сегментное дерево | Set 2 (Range Minimum Query)
- Операция вставки в B-Tree
- Внедрение B-Tree
- Операция удаления в B-Tree
- Splay Tree | Комплект 1 (Поиск)
- Splay Tree | Комплект 2 (Вставка)
- Найти LCA в двоичном дереве с помощью RMQ
- Интервальное дерево
- Красно-Черное Дерево | Комплект 1 (Введение)
0.00 (0%) 0 votes