stringtranslate.com

Троичное дерево

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

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

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

Определение

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

– Пусть – высота тернарного дерева.

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

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

Обычные операции

Вставка

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

Внешние узлы

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

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

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

Удаление

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

Узел с нулевым или одним дочерним узлом

Допустим, что удаляемый узел — это узел A. Если у узла нет потомков ( внешний узел ), удаление выполняется путем установки потомка родителя A в значение null и родителя A в значение null. Если у него есть один потомок, установите родителя потомка A в значение родителя A и установите потомка родителя A в значение потомка A.

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

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

 в / \ быть из / \ / \ как есть или \ \ \ / \ в он это на

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

 _ _ _ _ _ _ _ _ _ _ _ _ _ / / / \ \ \ / / / \ \ \ абхиот / \ / \ | / | \ /|\ | steyenstfnro как в быть он в это из на или к

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

 я / | \ / | \ бсо / | \ / \ | \ aehntnt | \ | / \ | сиефро \ т

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

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

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

Ссылки

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