Files
hello-algo/ru/docs/chapter_tree/array_representation_of_tree.md
2026-01-20 15:08:42 +08:00

5.5 KiB
Raw Blame History

Представление двоичного дерева с помощью массивом

При представлении в виде списка единицей хранения двоичного дерева является узел TreeNode, а узлы соединяются между собой указателями. В предыдущем разделе были рассмотрены основные операции с двоичным деревом, представленным в виде списка.

Можно ли представить двоичное дерево с помощью массива? Ответ положительный.

Представление идеального двоичного дерева

Сначала рассмотрим простой пример. Если дано идеальное двоичное дерево и все его узлы хранятся в массиве в порядке обхода по уровням, то каждому узлу соответствует уникальный индекс массива.

На основе свойств обхода по уровням можно вывести формулу отображения между индексом родительского узла и индексами дочерних узлов: если индекс узла равен i, то индекс его левого дочернего узла равен 2i + 1, а индекс правого дочернего узла равен $2i + 2$. На рисунке ниже показаны отношения отображения между индексами различных узлов.

Роль формулы отображения эквивалентна ссылкам на узлы (указателям) в списке. Для любого узла в массиве мы можем получить доступ к его левому (правому) дочернему узлу с помощью формулы отображения.

Представление произвольного двоичного дерева

Преимущества и ограничения