Тройное дерево - Ternary tree

Простое тройное дерево размером 10 и высотой 2.

В Информатика, а тройное дерево это древовидная структура данных в котором каждый узел имеет самое большее три ребенок узлы, обычно различаются как «левый», «средний» и «правый». Узлы с дочерними узлами являются родительскими узлами, а дочерние узлы могут содержать ссылки на своих родителей. Вне дерева часто есть ссылка на «корневой» узел (предок всех узлов), если он существует. К любому узлу в структуре данных можно добраться, начав с корневого узла и неоднократно следуя ссылкам на левый, средний или правый дочерний узел.

Тернарные деревья используются для реализации Тернарные деревья поиска и Троичные кучи.

Определение

  • Направленный край - Ссылка от родителя на ребенка.
  • Корень - Узел без родителей. В корневом дереве есть не более одного корневого узла.
  • Листовой узел - Любой узел, у которого нет детей.
  • Родительский узел - Любой узел, связанный направленным ребром со своим дочерним или дочерним узлом.
  • Дочерний узел - Любой узел, соединенный с родительским узлом направленным ребром.
  • Глубина - Длина пути от корня до узла. Набор всех узлов на заданной глубине иногда называют уровнем дерева. Корневой узел находится на нулевой глубине.
  • Высота - Длина пути от корня до самого глубокого узла в дереве. У (корневого) дерева только с одним узлом (корнем) высота равна нулю. На диаграмме-примере дерево имеет высоту 2.
  • Брат - Узлы, которые используют один и тот же родительский узел.

- Узел p является предком узла q, если он существует на пути от q до корня. Тогда узел q называется потомком p.

- Размер узла - это количество его потомков, включая самого себя.

Свойства тернарных деревьев

  • Максимальное количество узлов

- Позволять быть высотой тройного дерева.

- Позволять - максимальное количество узлов в троичном дереве высоты h

часM(час)
01
14
213
340

- Каждое дерево высотой h имеет не более узлы.

  • Если узел занимает ДЕРЕВО , то его Левый ребенок хранится в ДЕРЕВЕ .
  • Средний ребенок хранится в ДЕРЕВЕ .
  • Правый ребенок хранится в ДЕРЕВЕ .

Общие операции

Вставка

Узлы могут быть вставлены в тройные деревья между тремя другими узлами или добавлены после внешний узел. В троичных деревьях для вставляемого узла указывается его дочерний элемент.

Внешние узлы

Скажем, что добавляемый внешний узел - это узел A. Чтобы добавить новый узел после узла A, A назначает новый узел как один из своих дочерних узлов, а новый узел назначает узел A как свой родительский.

Внутренние узлы

Вставка на внутренние узлы сложнее, чем на внешних узлах. Скажем, что внутренний узел - это узел A, а этот узел B - дочерний для A. (Если вставка предназначена для вставки правого дочернего элемента, тогда B является правым дочерним элементом A, и аналогично с левой дочерней вставкой или средним дочерним элементом.) A назначает своего дочернего элемента новому узлу, а новый узел назначает своего родителя для A. Затем новый узел назначает своего дочернего элемента для B, а B назначает своего родителя в качестве нового узла.

Удаление

Удаление - это процесс, при котором узел удаляется из дерева. Только определенные узлы в троичном дереве могут быть удалены однозначно.

Узел с нулем или одним дочерним элементом

Скажите, что удаляемый узел - это узел A. Если узел не имеет дочерних (внешний узел ), удаление выполняется путем установки дочернего элемента родительского элемента A на значение NULL и родительский элемент A равен нулю. Если у него есть один дочерний элемент, установите родительский элемент дочернего элемента A на родительский элемент A и установите дочерний элемент родительского элемента A на дочерний элемент A.

Сравнение с другими деревьями

На рисунке ниже представлено двоичное дерево поиска, которое представляет 12 двухбуквенных слов. Все узлы в левом дочернем элементе имеют меньшие значения, в то время как все узлы в правом дочернем элементе имеют большие значения для всех узлов. Поиск начинается с корня. Чтобы найти слово «ON», мы сравниваем его с «IN» и берем правую ветку. Каждое сравнение могло получить доступ к каждому символу обоих слов.

        в / быть в / / как есть или / в нем он на 

Цифровой поиск пытается сохранять строки посимвольно. Следующее изображение представляет собой дерево, которое представляет тот же набор из 12 слов;

         _ _ _ _ _ _ _ _ _ _ _ _ _ / / / / / / a b h i o t / / | / | / | | s t e y e n s t f n r o as at be by he in it on или to

каждое входное слово показано под узлом, который его представляет. В дереве, представляющем слова из строчных букв, каждый узел имеет 26-стороннее ветвление. Поиск выполняется очень быстро: поиск «IS» начинается с корня, берет ветвь «I», затем ветвь «S» и заканчивается на нужном узле. На каждом узле выполняется доступ к элементу массива, проверка на значение null и переход.

                    я / | / | b s o / | / | а е н т н т | | / | с й е ф о т

Картинка выше представляет собой сбалансированное троичное дерево поиска для того же набора из 12 слов. Нижний и верхний указатели показаны наклонными линиями, а равные указатели показаны вертикальными линиями. Поиск слова «IS» начинается с корня, продолжается по равному дочернему элементу до узла со значением «S» и останавливается там после двух сравнений. Поиск по запросу «AX» выполняет три сравнения с первой буквой «A» и два сравнения со второй буквой «X», прежде чем сообщать, что слово отсутствует в дереве.[1]

Примеры троичных деревьев

Смотрите также

Рекомендации

  1. ^ Джон Бентли и Боб Седжвик (1998), журнал доктора Добба
  2. ^ Цена, Х. Ли (2008). «Пифагорейское дерево: новый вид». arXiv:0809.4324.