Menu
CoddyTech

Binary Tree Level Order Traversal

Você recebe uma árvore binária armazenada no array tree. 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 indica uma posição vazia, e o array pode terminar com entradas extras de -1.

Retorne os valores dos nós nível por nível: uma lista com o valor da raiz, depois uma lista com os valores um nível abaixo, da esquerda para a direita, e assim por diante até o nível mais profundo.

Função

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-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 mais alto, cada uma da esquerda para a direita

Restrições

  • 1 ≤ tree.length ≤ 32767
  • Cada tree[i] é -1 ou um valor tal que 0 ≤ tree[i] ≤ 1000.
  • tree[0] nunca é -1, então a árvore tem pelo menos um nó.
  • O 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 = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
Saída
[[4], [9, 2], [6, 8, 5], [3]]
Explicação
A raiz 4 tem os filhos 9 e 2 nos índices 1 e 2. O índice 3 está vazio, então o terceiro nível é 6 (índice 4, abaixo de 9), seguido por 8 e 5 (índices 5 e 6, abaixo de 2). O 3 no índice 9 é o filho esquerdo de 6, sozinho no quarto nível.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue retornar os níveis em ordem zigue-zague, o primeiro da esquerda para a direita, o segundo da direita para a esquerda e assim por diante, sem ordenar nenhum nível?

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

[[4], [9, 2], [6, 8, 5], [3]]