5.5 KiB
Представление двоичного дерева с помощью массивом
При представлении в виде списка единицей хранения двоичного дерева является узел TreeNode, а узлы соединяются между собой указателями. В предыдущем разделе были рассмотрены основные операции с двоичным деревом, представленным в виде списка.
Можно ли представить двоичное дерево с помощью массива? Ответ положительный.
Представление идеального двоичного дерева
Сначала рассмотрим простой пример. Если дано идеальное двоичное дерево и все его узлы хранятся в массиве в порядке обхода по уровням, то каждому узлу соответствует уникальный индекс массива.
На основе свойств обхода по уровням можно вывести формулу отображения между индексом родительского узла и индексами дочерних узлов: если индекс узла равен i, то индекс его левого дочернего узла равен 2i + 1, а индекс правого дочернего узла равен $2i + 2$. На рисунке ниже показаны отношения отображения между индексами различных узлов.
Роль формулы отображения эквивалентна ссылкам на узлы (указателям) в списке. Для любого узла в массиве мы можем получить доступ к его левому (правому) дочернему узлу с помощью формулы отображения.