Двои́чное де́рево (Бинарное дерево) — иерархическая структура данных, в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками. Двоичное дерево является упорядоченным ориентированным деревом.
Для практических целей обычно используют два подвида двоичных деревьев — двоичное дерево поиска и двоичная куча.
Рекурсивное определение
Существует следующее рекурсивное определение двоичного дерева (см. БНФ):
<двоичное дерево> ::= ( <данные> <двоичное дерево> <двоичное дерево> ) | null .
То есть двоичное дерево либо является пустым, либо состоит из данных и двух поддеревьев (каждое из которых может быть пустым). Очевидным, но важным для понимания фактом является то, что каждое поддерево в свою очередь тоже является деревом. Если у некоторого узла оба поддерева пустые, то он называется листовым узлом (листовой вершиной) или конечным (терминальным) узлом[1].
Например, показанное справа на рис. 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[2].
Применение
Многие полезные структуры данных основаны на двоичном дереве:
Примечания
Ссылки
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.