Menu
CoddyTech

Symmetric Tree

Você recebe uma árvore binária armazenada no array tree em ordem por nível. A raiz fica no índice 0, os filhos do nó no índice i ficam em 2*i+1 (à esquerda) e 2*i+2 (à direita), -1 marca uma posição vazia, e o array pode terminar com entradas extras -1. Retorne true se a árvore for uma imagem espelhada de si mesma em torno de uma linha vertical que passa pela raiz e false caso contrário. Tanto a estrutura quanto os valores devem corresponder.

Função

isSymmetric(tree: integer-array) → boolean
treeinteger-array
a árvore binária em ordem por nível, com -1 para uma posição vazia
Retornaboolean
true se a árvore é um espelho de si mesma, false caso contrário

Restrições

  • 1 ≤ tree.length ≤ 32767
  • 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ó.
  • A matriz 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 = [1, 2, 2, 3, 4, 4, 3]
Saída
true
Explicação
Dobre a árvore ao meio. Os dois 2 nos índices 1 e 2 se encontram, os 3 externos nos índices 3 e 6 se encontram, e os 4 internos em 4 e 5 se encontram.

lock icon+16 testes ocultos ao enviar

challenge icon

Para ir além

Se a forma é espelhada, mas alguns valores não são, qual é o menor número de valores de nós que você precisa alterar para tornar a árvore simétrica?

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

Caso 1

Caso 2

Caso 3

Entrada

tree = [1, 2, 2, 3, 4, 4, 3]

Esperado

true