Несбалансированное (или не куча) двоичное дерево может быть представлено с использованием массива следующим образом:
array = [1, 2, null, 3, 4, 5, 6, null, 7, 8, null]
1
/ \
2 null
/ \
3 4
/ \ / \
5 6 null 7
/ \
8 null
Как можно выполнить обход дерева с использованием данного массива? В частности, как я могу вычислить индексы левого и правого детей родителей?
В сбалансированном дереве (таком как дерево кучи) мы можем легко вычислить индексы двух детей, используя индекс их родителей, и наоборот, так какследующим образом.
leftChildIdx = 2 * parentIdx + 1
rightChildIdx = 2 * parentIdx + 2
Есть ли простой способ пройти через это несбалансированное или, казалось бы, случайное двоичное дерево, используя массив?