Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Você recebe uma árvore binária armazenada no array root. A raiz fica no índice 0, os filhos do í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 os valores dos nós nível por nível, em ordem de zigue-zague: o nível da raiz da esquerda para a direita, o próximo da direita para a esquerda e assim por diante, alternando até o nível mais profundo. Isso também é chamado de percurso em ordem de nível em espiral.

Função

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
a árvore em ordem de heap, com -1 para uma posição vazia
Retornainteger-2d-array
uma lista de valores por nível, começando pelo nível superior e alternando entre da esquerda para a direita e da direita para a esquerda

Restrições

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] é -1 ou um valor com 0 ≤ root[i] ≤ 104.
  • Os valores dos nós são distintos.
  • root[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 árvore tem no máximo 14 níveis.

Exemplos

Entrada
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Saída
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Explicação
Lendo da esquerda para a direita, os níveis são 8; 12, 5; 1, 9, 14; 4, 2, 11. Os níveis 1 e 3 são percorridos de trás para frente: [5, 12] e [11, 2, 4].
challenge icon

Para ir além

Você consegue colocar cada valor diretamente em seu lugar final na linha, sem inverter e sem usar uma segunda pilha?

Redefinir código
def zigzagLevelOrder(root):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

Saída Esperada

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]