Обход несбалансированного двоичного дерева в виде массива - PullRequest
2 голосов
/ 28 октября 2019

Несбалансированное (или не куча) двоичное дерево может быть представлено с использованием массива следующим образом:

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

Есть ли простой способ пройти через это несбалансированное или, казалось бы, случайное двоичное дерево, используя массив?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...