Jump to content

Тройное дерево

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

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

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

Определение

[ редактировать ]
  • Directed Edge — ссылка от родителя к дочернему элементу.
  • Корень — узел без родителей. В корневом дереве может быть не более одного корневого узла.
  • Листовой узел — любой узел, не имеющий дочерних элементов.
  • Родительский узел — любой узел, соединенный направленным ребром со своим дочерним или дочерними узлами.
  • Дочерний узел — любой узел, соединенный с родительским узлом направленным ребром.
  • Глубина — Длина пути от корня до узла. Набор всех узлов на заданной глубине иногда называют уровнем дерева. Корневой узел находится на нулевой глубине.
  • Высота — длина пути от корня до самого глубокого узла дерева. (Корневое) дерево только с одним узлом (корнем) имеет нулевую высоту. На диаграмме примера высота дерева равна 2.
  • Одноуровневый узел — узлы, которые имеют один и тот же родительский узел.
  • Узел p является предком узла q, если он существует на пути от q до корня. Узел q тогда называется потомком p.
  • Размер узла — это количество его потомков, включая его самого.

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

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

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

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

час М ( час )
0 1
1 4
2 13
3 40

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

  • Если узел занимает ДЕРЕВО , то его левый дочерний элемент сохраняется в TREE .
  • Mid Child хранится в TREE. .
  • Правый дочерний элемент хранится в TREE. .

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

[ редактировать ]

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

Внешние узлы

[ редактировать ]

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

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

[ редактировать ]

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

Удаление

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

        in
      /    \
     be    of
    /  \  /  \
   as  by is  or
    \   \  \  / \
    at  he it on to 

Цифровой поиск пытается хранить строки посимвольно. Следующая картинка — дерево, представляющее тот же набор из 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 is it of on or to

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

                    i
              /     |    \
             /      |     \
            b       s      o
         / |  \    / \    |  \
        a  e   h  n   t   n   t
        |   \  |         / \  |
        s    y e        f  r  o
         \
          t

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

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

[ редактировать ]

См. также

[ редактировать ]
  1. ^ Джон Бентли и Боб Седжвик (1998), Журнал доктора Добба
  2. ^ Прайс, Х. Ли (2008). «Древо Пифагора: новый вид». arXiv : 0809.4324 [ math.HO ].
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 80b125dfb90c01c3f59024506d8e98df__1689788460
URL1:https://arc.ask3.ru/arc/aa/80/df/80b125dfb90c01c3f59024506d8e98df.html
Заголовок, (Title) документа по адресу, URL1:
Ternary tree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)