Radix-дерево - это сжатый tr ie, где tr ie - это структура данных, которая реализует интерфейс ассоциативного массива и позволяет хранить значения как ключ-значение. Ключи обычно представляют собой строки, но можно использовать любой тип данных. Tr ie отличается от n-дерева своими узлами. Узлы тр ie не хранят ключи; вместо этого узел tr ie хранит односимвольные метки. Ключ, связанный с данным узлом, получается путем перехода от root дерева к этому узлу. Например:
+-----------+
| |
| " " |
| |
+------+-----------+------+
| |
| |
+----v------+ +-----v-----+
| | | |
| g | | c |
| | | |
+-----------+ +-----------+
| |
| |
+----v------+ +-----v-----+
| | | |
| o | | a |
| | | |
+-----------+ +-----------+
|
|
+-----v-----+
| |
| t |
| |
+-----------+
Итак, в этом примере мы видим tr ie с ключами, go и cat. Сжатое дерево tr ie или основание системы счисления отличается от tr ie тем, что удаляются все промежуточные узлы, у которых есть только один дочерний элемент.
Деревья оснований имеют несколько пользователей в основном дереве ядра. Архитектура PowerP C использует дерево для сопоставления реальных и виртуальных номеров IRQ. Код NFS прикрепляет дерево к соответствующим структурам inode для отслеживания невыполненных запросов. Однако наиболее распространенное использование оснований системы счисления - это код управления памятью. Структура address_space
, используемая для отслеживания резервного хранилища, содержит дерево счисления, которое отслеживает внутренние страницы, привязанные к этому сопоставлению . Среди прочего, это дерево позволяет коду управления памятью быстро находить страницы, которые загрязнены или подвергаются обратной записи.
Вот статья , в которой очень четко описан этот механизм проектирования.