Menu
CoddyTech

Top View of Binary Tree

Você recebe uma árvore binária armazenada no array root em ordem de heap: a raiz no índice 0, os filhos do índice i nos índices 2*i+1 (à esquerda) e 2*i+2 (à direita), e -1 para uma posição vazia.

A raiz está na coluna 0; um filho à esquerda fica uma coluna à esquerda de seu pai e um filho à direita fica uma coluna à direita. Vendo de cima, você vê o nó mais superficial de cada coluna; em caso de empate, aquele que aparece primeiro em seu nível, da esquerda para a direita (o índice menor). Retorne os valores que você vê, da coluna mais à esquerda até a mais à direita.

Função

topView(root: integer-array) → integer-array
rootinteger-array
a árvore em ordem de heap, com -1 para uma posição vazia
Retornainteger-array
o valor visto de cima em cada coluna, começando pela coluna mais à esquerda

Restrições

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] é -1 ou um valor com 0 ≤ root[i] ≤ 104, 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, 9, 6]
Explicação
Da esquerda para a direita, as colunas contêm 4 (coluna -2), 2 (-1), a raiz 5 (0), 9 (1) e 6 (2). 7 e 1 também ficam na coluna 0, mas a raiz está acima deles.
challenge icon

Para ir além

Com objetos de nó em vez de um array, não há índice para desempatar. Como você enunciaria a regra de desempate, e o seu código de busca em largura mudaria?

Redefinir código
def topView(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, 9, 6]