2-3 дерево | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Тип | дерево | ||||||||||||||||||||
Изобретено | 1970 | ||||||||||||||||||||
Изобретен | Джоном Хопкрофтом | ||||||||||||||||||||
Сложность времени в нотации большого O | |||||||||||||||||||||
|
В информатике дерево 2–3 представляет собой древовидную структуру данных, где каждый узел с дочерними элементами (внутренний узел ) имеет либо два дочерних элемента (2-узел), либо один элемент данных или три дочерних элемента (3-узла) и два элемента данных. Дерево 2-3 - это B-дерево порядка 3. Узлы за пределами дерева (листовые узлы ) не имеют дочерних элементов и одного или двух элементов данных. 2–3 дерева были изобретены Джоном Хопкрофтом в 1970 году.
Требуется сбалансировать 2–3 дерева, что означает, что каждый лист находится на одном уровне. Отсюда следует, что каждое правое, центральное и левое поддерево узла содержит одинаковый или почти одинаковый объем данных.
Мы говорим, что внутренний узел является 2-узлом, если он имеет один элемент данных и два дочерних узла.
Мы говорим, что внутренний узел является 3-узлом, если он имеет два элемента данных и три дочерних узла.
A 4-узел с тремя элементами данных может быть временно создан во время манипулирования деревом, но никогда не сохраняется в дереве постоянно.
2 узла
3 узла
Мы говорим, что T является 2–3 деревом тогда и только тогда, когда выполняется одно из следующих утверждений:
Поиск элемента в 2–3 дерево аналогично поиску элемента в бинарном дереве поиска . Поскольку элементы данных в каждом узле упорядочены, функция поиска будет направлена на правильное поддерево и, в конечном итоге, на правильный узел, содержащий элемент.
Вставка поддерживает сбалансированное свойство дерева.
Чтобы вставить в 2-узел, новый ключ добавляется к 2-узлу в соответствующем порядке.
Для вставки в 3-узел может потребоваться дополнительная работа в зависимости от расположения 3-узла. Если дерево состоит только из трех узлов, узел разбивается на три двухузловых с соответствующими ключами и дочерними элементами.
Вставка числа в дерево 2-3 для 3 возможных случаев.Если целевой узел является 3-узлом, родительский элемент которого является 2-узлом, ключ вставляется в 3-узел, чтобы создать временный 4-х узел. На иллюстрации ключ 10 вставлен в 2-узел с 6 и 9. Средний ключ - 9, и он повышается до родительского 2-узла. В результате остается 3-узел из 6 и 10, которые разделяются на два 2-узла, которые являются дочерними по отношению к родительскому 3-узлу.
Если целевой узел является 3-узлом, а родительский - 3-узлом, создается временный 4-узел, который затем разделяется, как указано выше. Этот процесс продолжается вверх по дереву до корня. Если корень должен быть разделен, то выполняется процесс одного 3-узла: временный 4-узловый корень разделяется на три 2-узла, один из которых считается корнем. Эта операция увеличивает высоту дерева на единицу.
Так как 2-3 дерева аналогичны по структуре красно-черным деревьям, параллельные алгоритмы для красно-черных деревьев могут быть применяется также к 2-3 деревьям.