Двоичное дерево: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Нет описания правки Метки: с мобильного устройства из мобильной версии через расширенный мобильный режим |
Дополнительное название дерева |
||
Строка 1: | Строка 1: | ||
'''Двои́чное де́рево''' — иерархическая [[структура данных]], в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками. Двоичное дерево является упорядоченным [[Дерево (теория графов)|ориентированным деревом]]<ref>{{Cite web|url=http://kvodo.ru/binary-tree.html|title=Двоичное дерево.|publisher=kvodo.ru|accessdate=2019-03-01|archive-date=2019-03-02|archive-url=https://web.archive.org/web/20190302025107/http://kvodo.ru/binary-tree.html|deadlink=no}}</ref>. |
'''Двои́чное де́рево''' (Бинарное дерево) — иерархическая [[структура данных]], в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками. Двоичное дерево является упорядоченным [[Дерево (теория графов)|ориентированным деревом]]<ref>{{Cite web|url=http://kvodo.ru/binary-tree.html|title=Двоичное дерево.|publisher=kvodo.ru|accessdate=2019-03-01|archive-date=2019-03-02|archive-url=https://web.archive.org/web/20190302025107/http://kvodo.ru/binary-tree.html|deadlink=no}}</ref>. |
||
Для практических целей обычно используют два подвида двоичных деревьев — [[двоичное дерево поиска]] и [[двоичная куча]]. |
Для практических целей обычно используют два подвида двоичных деревьев — [[двоичное дерево поиска]] и [[двоичная куча]]. |
Версия от 12:53, 19 октября 2023
Двои́чное де́рево (Бинарное дерево) — иерархическая структура данных, в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками. Двоичное дерево является упорядоченным ориентированным деревом[1].
Для практических целей обычно используют два подвида двоичных деревьев — двоичное дерево поиска и двоичная куча.
Рекурсивное определение
Существует следующее рекурсивное определение двоичного дерева (см. БНФ):
<двоичное дерево> ::= ( <данные> <двоичное дерево> <двоичное дерево> ) | null .
То есть двоичное дерево либо является пустым, либо состоит из данных и двух поддеревьев (каждое из которых может быть пустым). Очевидным, но важным для понимания фактом является то, что каждое поддерево в свою очередь тоже является деревом. Если у некоторого узла оба поддерева пустые, то он называется листовым узлом (листовой вершиной) или конечным (терминальным) узлом[2].
Например, показанное справа на рис. 1 дерево согласно этой грамматике можно было бы записать так:
(m (e (c (a null null) null ) (g null (k null null) ) ) (s (p (o null null) (s null null) ) (y null null) ) ) |
Каждый узел в дереве задаёт поддерево, корнем которого он является. У вершины m = (data, left, right) есть два потомка (левый и правый) left и right и, соответственно, два поддерева (левое и правое) с корнями left и right[3].
Применение
Многие полезные структуры данных основаны на двоичном дереве:
- Двоичное дерево поиска
- Двоичная куча
- АВЛ-дерево
- Красно-чёрное дерево
- Матричное дерево
- Дерево Фибоначчи
- Суффиксное дерево
Примечания
- ↑ Двоичное дерево. kvodo.ru. Дата обращения: 1 марта 2019. Архивировано 2 марта 2019 года.
- ↑ Дерево . Дата обращения: 1 марта 2019. Архивировано 2 марта 2019 года.
- ↑ Двоичные деревья поиска: начальные сведения . algolist.manual.ru. Дата обращения: 1 марта 2019. Архивировано 14 июля 2019 года.