Menu
CoddyTech

Invert Binary Tree

Дано двоичное дерево, хранящееся в массиве tree в порядке уровней. Корень находится по индексу 0, левый и правый потомки узла с индексом i — по индексам 2*i+1 и 2*i+2 соответственно, -1 обозначает пустое место, а в конце массива могут быть дополнительные элементы -1.

Инвертируй дерево: поменяй местами левого и правого потомков каждого узла, чтобы всё дерево стало зеркальным отражением. Верни инвертированное дерево в том же формате, без элементов -1 в конце.

Функция

invertTree(tree: integer-array) → integer-array
treeinteger-array
двоичное дерево в порядке уровней, где -1 обозначает пустое место
Возвращаетinteger-array
зеркальное дерево в порядке уровней, без завершающих элементов -1

Ограничения

  • 1 ≤ tree.length ≤ 16383
  • Каждый tree[i] равен -1 или является значением, для которого 0 ≤ tree[i] ≤ 1000.
  • tree[0] никогда не равно -1, поэтому в дереве есть как минимум один узел.
  • После последнего узла в массиве могут быть лишние элементы -1.
  • Оба потомка пустого места тоже пусты, а глубина не превышает 14.

Примеры

Ввод
tree = [5, 3, 8, 1, 4, -1, 9]
Вывод
[5, 8, 3, 9, -1, 4, 1]
Пояснение
Дети корня 3 и 8 меняются местами. Под ними 1 и 4, находившиеся под 3, возвращаются в виде 4 и 1, а у 8, у которого был только правый потомок 9, теперь он находится слева.

lock icon+14 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Как бы вы проверили, является ли дерево зеркальным отражением самого себя, используя те же пары индексов, но не создавая перевёрнутую копию?

Сбросить код
def invertTree(tree):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

tree = [5, 3, 8, 1, 4, -1, 9]

Ожидается

[5, 8, 3, 9, -1, 4, 1]