Menu
CoddyTech

Invert Binary Tree

Você recebe uma árvore binária armazenada no array tree em ordem por níveis. A raiz fica no índice 0, os filhos do nó no índice i ficam em 2*i+1 (esquerdo) e 2*i+2 (direito), -1 marca uma posição vazia, e o array pode terminar com entradas extras -1.

Inverta a árvore: troque os filhos esquerdo e direito de cada nó, para que a árvore inteira se torne sua imagem espelhada. Retorne a árvore invertida no mesmo formato, sem entradas -1 no final.

Função

invertTree(tree: integer-array) → integer-array
treeinteger-array
a árvore binária em ordem por nível, com -1 para uma posição vazia
Retornainteger-array
árvore espelhada em ordem por nível, sem entradas -1 no final

Restrições

  • 1 ≤ tree.length ≤ 16383
  • Cada tree[i] é -1 ou um valor com 0 ≤ tree[i] ≤ 1000.
  • tree[0] nunca é -1, então a árvore tem pelo menos um nó.
  • The array pode terminar com entradas -1 extras após o último nó.
  • Ambos os filhos de um espaço vazio também estão vazios, e a profundidade é no máximo 14.

Exemplos

Entrada
tree = [5, 3, 8, 1, 4, -1, 9]
Saída
[5, 8, 3, 9, -1, 4, 1]
Explicação
Os filhos da raiz 3 e 8 trocam de lugar. Abaixo deles, o 1 e o 4 que estavam abaixo de 3 voltam como 4 e 1, e 8, que tinha apenas um filho à direita, 9, agora o tem à esquerda.

lock icon+14 testes ocultos ao enviar

challenge icon

Para ir além

Como você verificaria se uma árvore é o seu próprio espelho, usando os mesmos pares de índices, mas sem construir a cópia invertida?

Redefinir código
def invertTree(tree):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

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