Объяснение 4 типов деревьев в структуре данных: свойства и приложения
Опубликовано: 2021-06-18Оглавление
Что такое дерево в структуре данных?
Дерево — это тип структуры данных, представляющий иерархические данные. Он имеет нелинейную структуру, состоящую из узлов, соединенных ребрами. Среди других типов структур данных, которые выполняют операции в линейной структуре данных, сложность увеличивается с увеличением размера данных. Однако древовидная структура данных обеспечивает более быстрый доступ к нелинейным данным. Благодаря наличию различных типов структур данных и связанных с ними алгоритмов выполнение задач стало простым и эффективным способом.
Вот несколько терминов, связанных с деревьями в структуре данных :
- Узел : узел — это объект в древовидной структуре данных, который содержит ключ или значение и указатели на его дочерние узлы.
- Дочерний узел : дочерний узел является потомком любого узла.
- Листовые узлы: узлы, которые не имеют дочерних узлов и являются самым нижним узлом в дереве. Их также называют внешними узлами.
- Корень : это самая верхняя точка дерева.
- Внутренний узел : узел, имеющий хотя бы один дочерний узел.
- Край: край относится к соединению между любыми двумя узлами в дереве.
- Высота узла: количество ребер от узла до самого глубокого листа.
- Глубина узла : количество ребер от корня до узла.
- Высота дерева : высота корневого узла.
- Степень узла : общее количество ветвей к этому узлу.
- Лес: набор непересекающихся деревьев.
Виды дерева
1. Бинарное дерево
Двоичное дерево — это тип древовидной структуры данных, в которой каждый родительский узел имеет не более двух дочерних узлов. Как следует из названия, двоичный означает два, поэтому каждый узел может иметь 0, 1 или 2 узла. Структура данных двоичного дерева показана на рисунке 1. Узел 1 в дереве содержит два указателя, по одному на каждый дочерний узел. Узел 2 снова имеет по два указателя на два дочерних узла. Принимая во внимание, что узлы 3, 5 и 6 являются конечными узлами и, следовательно, имеют нулевые указатели как в левой, так и в правой частях.
Рисунок 1: Представление бинарного дерева ( https://www.javatpoint.com/binary-tree ).
Свойства бинарного дерева
- Максимальное количество узлов на каждом уровне I равно 2 i .
- Высота дерева на рисунке 1 равна 3, что означает, что максимальное количество узлов будет (1+2+4+8)=15.
- На высоте h максимально возможное количество узлов равно (20 + 21 + 22+….2h) = 2h+1 -1.
- На высоте h минимально возможное количество узлов равно h+1.
- Минимальное количество узлов будет представлять дерево максимальной высоты и наоборот.
Даже бинарные деревья можно разделить на следующие типы деревьев:
- Полное бинарное дерево: это особый тип бинарного дерева. В этой древовидной структуре данных каждый родительский узел или внутренний узел имеет либо двух дочерних узлов, либо не имеет дочерних узлов.
- Идеальное бинарное дерево: в этом типе древовидной структуры данных каждый внутренний узел имеет ровно два дочерних узла, и все конечные узлы находятся на одном уровне.
- Полное бинарное дерево: похоже на полное бинарное дерево с некоторыми отличиями.
- Каждый уровень полностью заполнен.
- Листовые узлы наклоняются влево от дерева.
- Не обязательно, чтобы последний листовой узел имел правильного родственного узла, т. е. полное бинарное дерево не обязательно должно быть полным бинарным деревом.
- Вырожденное или патологическое дерево: у этих деревьев есть один дочерний элемент слева или справа от родительского узла.
- Искаженное бинарное дерево: это патологическое или вырожденное дерево, в котором преобладают либо левые, либо правые узлы. Таким образом, существует два типа асимметричных бинарных деревьев, т.е. асимметричное влево или бинарное дерево с правосторонним асимметрией.
- Сбалансированное бинарное дерево: разница между высотой левого и правого поддеревьев для каждого узла равна 0 или 1.
2. Двоичное дерево поиска
Эти древовидные структуры нелинейны, и один узел связан с несколькими узлами. Узел может быть подключен не более чем к двум дочерним узлам. Оно называется бинарным деревом поиска, потому что:
- Каждый узел имеет не более двух дочерних узлов.
- Его можно использовать для поиска элемента за время 0 (log (n)) и, следовательно, известное как дерево поиска.
Рисунок: Пример двоичного дерева поиска ( https://www.tutorialspoint.com/data_structures_algorithms/binary_search_tree.htm )
Свойства бинарного дерева поиска:
- Значение во всех узлах левого поддерева должно быть меньше значения в корневом узле.
- Значение во всех узлах правого поддерева должно быть больше значения в корневом узле.
3. Дерево АВЛ
Деревья AVL — это типы или варианты двоичного дерева. Он состоит из свойств как двоичного, так и двоичного дерева поиска. Эти деревья, изобретенные Адельсоном Вельски Линдасом, являются самобалансирующими, что означает, что высота левого поддерева и правого поддерева сбалансированы. Этот баланс измеряется с точки зрения уравновешивающего фактора.
Балансирующий фактор:
- Это разница между левым поддеревом и правым поддеревом.
- Значение коэффициента балансировки должно быть 0, -1 или 1. Следовательно, каждый узел дерева AVL должен состоять из значения коэффициента балансировки, т. е. 0, -1 или 1.
- Коэффициент баланса = (высота левого поддерева – высота правого поддерева)
- Дерево AVL называется сбалансированным, если коэффициент баланса каждого узла находится в диапазоне от -1 до 1.
Значения узлов, отличные от -1, до 1 в дереве AVL, будут представлять несбалансированное дерево, которое необходимо сбалансировать.
- Если узел имеет коэффициент баланса 1, это означает, что левое поддерево на один уровень выше правого поддерева.
- Если узел имеет коэффициент баланса 0, это означает, что высота левого поддерева и правого поддерева равны.
- Если узел имеет коэффициент баланса -1, это означает, что правое поддерево на один уровень выше левого поддерева или левое поддерево на один уровень ниже правого поддерева.
4. B-дерево
B-дерево — это более обобщенная форма бинарного дерева поиска. Оно также известно как сбалансированное по высоте дерево m путей, где m — порядок дерева. Каждый узел дерева может иметь более одного ключа и более двух дочерних узлов. В случае бинарного дерева конечные узлы могут быть не на одном уровне. Однако в случае B-дерева все конечные узлы должны находиться на одном уровне.
Свойства B-дерева:
- Ключи хранятся в порядке возрастания для каждого узла x.
- В каждом узле существует логическое значение «x.leaf», которое истинно, если x является листом.
- Внутренние узлы должны иметь не более «n-1» ключей, где n — порядок дерева. Он также должен иметь указатель для каждого ребенка.
- Все узлы будут иметь не более n дочерних элементов и не менее n/2 дочерних элементов, кроме корневого узла.
- Листовые узлы дерева имеют одинаковую глубину.
- Корневой узел будет иметь не менее 1 ключа и не менее двух дочерних элементов.
- Если n ≥ 1, то для любого n-ключевого B-дерева высоты h и минимальной степени t ≥ 2 h ≥ logt (n+1)/2.
Приложения
- Двоичное дерево поиска можно применять для поиска элемента в наборе элементов.
- Деревья кучи используются для сортировки кучи.
- Современные маршрутизаторы используют тип дерева под названием Tries для хранения маршрутной информации.
- B-деревья и T-деревья в основном используются популярными базами данных для хранения своих данных.
- Синтаксическое дерево используется компиляторами для проверки синтаксиса каждой написанной программы.
Заключение
Структуры данных обеспечивают организованный способ хранения данных для легкого управления и эффективной обработки. Для разных типов данных существуют различные типы структур данных. В зависимости от типа данных, которые необходимо сохранить, он выбирается пользователем.
Деревья — это типы таких структур данных, в которых может храниться иерархический тип данных. Данные хранятся в узлах, которые иногда хранят ссылку на другие узлы, называемые дочерними узлами.
В зависимости от количества дочерних узлов деревья можно разделить на различные типы, как указано в статье. В зависимости от расположения узлов в древовидных типах каждая древовидная структура имеет связанные свойства. Благодаря различным типам операций, которые могут выполняться разными классами деревьев, этот тип структуры данных нашел применение в алгоритмах сортировки и хранения данных.
Программа Executive PG в разработке программного обеспечения — специализация в разработке полного стека, курируемая upGrad и IIIT-Bangalore, может помочь вам улучшить свой профиль и обеспечить лучшие возможности трудоустройства в качестве программиста.
Хотя и бинарное дерево, и бинарное дерево поиска кажутся на первый взгляд похожими, тем не менее, они во многом отличаются друг от друга: Самобалансирующиеся деревья представляют собой бинарные деревья поиска, которые структурированы таким образом, что при вставке нового узла эти деревья уравновешиваются.Назовите разницу между бинарным деревом и бинарным деревом поиска?
Бинарное дерево -
1. Двоичное дерево может иметь максимум 2 узла, и для узлов нет определенного порядка.
2. Такие операции, как вставка, удаление и поиск, выполняются сравнительно медленнее, поскольку они неупорядочены.
3. Полное бинарное дерево, расширенное бинарное дерево и полное бинарное дерево являются примерами бинарных деревьев.
Двоичное дерево поиска -
1. Бинарное дерево поиска — это особый вид бинарного дерева, в котором каждый узел имеет правое и левое поддеревья, которые сами являются бинарными деревьями поиска.
2. Все эти операции выполняются быстрее, так как элементы расположены упорядоченно.
3. AVL-дерево, танго-дерево и расширенное дерево являются примерами бинарных деревьев поиска. Что такое самобалансирующиеся деревья и где они используются?
Некоторые примеры самобалансирующихся деревьев:
АВЛ-дерево
Развернуть дерево
Красно-черное дерево
Самобалансирующиеся деревья используются для реализации нескольких реальных приложений, таких как транзакции базы данных, файловые системы, управление кешем, алгоритмы, написанные для сборки мусора, реализация мультимножества.