Menu
CoddyTech

Vertical Order Traversal of a Binary Tree

Uma árvore binária é armazenada no array root na ordem de heap: a raiz está no índice 0, os filhos do índice i estão em 2*i+1 (à esquerda) e 2*i+2 (à direita), -1 indica um espaço vazio, e o array pode terminar com entradas extras -1.

A raiz está na coluna 0; um filho à esquerda fica uma coluna à esquerda de seu pai, e um filho à direita fica uma coluna à direita. Retorne uma lista por coluna, da esquerda para a direita. Dentro de uma coluna, liste os nós de cima para baixo e, entre os nós que compartilham uma coluna e uma profundidade, em ordem crescente de valor.

Função

verticalTraversal(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 coluna, começando pela coluna mais à esquerda, cada uma de cima para baixo

Restrições

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] é -1 ou um valor com 0 ≤ root[i] ≤ 5000, e nenhum valor aparece duas vezes.
  • root[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 árvore tem no máximo 14 níveis.

Exemplos

Entrada
root = [5, 2, 9, 4, 7, 1, 6]
Saída
[[4], [2], [5, 1, 7], [9], [6]]
Explicação
A coluna 0 contém a raiz 5, depois 7 e 1 dois níveis abaixo. Esses dois compartilham a coluna e a profundidade, então 1 vem antes de 7, embora 7 esteja mais à esquerda.
challenge icon

Para ir além

Cada valor é, no máximo, 5000. Você consegue usar isso para dispensar a ordenação por comparação e concluir em O(n + 5000) tempo?

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

Teste #1

Teste #2

Teste #3

Argumento

root = [5, 2, 9, 4, 7, 1, 6]

Saída Esperada

[[4], [2], [5, 1, 7], [9], [6]]