Двоичное дерево: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м Робот: pt:Árvore binária лишена статуса избранной статьи
м r2.7.2) (робот добавил: hi:बाइनरी ट्री
Строка 54: Строка 54:


[[Категория:Деревья (структуры данных)]]
[[Категория:Деревья (структуры данных)]]




[[bg:Двоично дърво]]
[[bg:Двоично дърво]]
Строка 67: Строка 65:
[[fr:Arbre binaire]]
[[fr:Arbre binaire]]
[[he:עץ בינארי]]
[[he:עץ בינארי]]
[[hi:बाइनरी ट्री]]
[[id:Pohon biner]]
[[id:Pohon biner]]
[[is:Tvíundatré]]
[[is:Tvíundatré]]

Версия от 23:05, 3 января 2012

Двои́чное де́реводревовидная структура данных, в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками.

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

Рекурсивное определение

Существует следующее рекурсивное определение двоичного дерева (см. БНФ):

<дерево> ::= ( <данные> <дерево> <дерево> ) | nil .

То есть двоичное дерево либо является пустым, либо состоит из данных и двух поддеревьев (каждое из которых может быть пустым). Очевидным, но важным для понимания фактом является то, что каждое поддерево в свою очередь тоже является деревом. Если у некоторого узла оба поддерева пустые, то он называется листовым узлом (листовой вершиной).

Например, показанное справа на рис. 1 дерево, согласно этой грамматике можно было бы записать так:

 (m 
    (e 
        (c 
            (a nil nil)
            nil
        )
        (g 
            nil
            (k nil nil)
        )
     )
     (s
        (p (o nil nil) (s nil nil) )
        (y nil nil)
     )
 )
Рис. 1. Двоичное дерево поиска, в котором ключами являются латинские символы упорядоченные по алфавиту.

Каждый узел в дереве задаёт поддерево, корнем которого он является. У вершины n=(data, left, right) есть два ребёнка (левый и правый) left и right и, соответственно, два поддерева (левое и правое) с корнями left и right.

Применение

Многие полезные структуры данных основаны на двоичном дереве: