Menu
CoddyTech

Left View of Binary Tree

Você recebe uma árvore binária como o 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), e -1 marca uma posição vazia. O array pode terminar com entradas extras -1.

Fique à esquerda da árvore. Em cada nível, você vê um nó, o mais à esquerda; o restante do nível fica escondido atrás dele. Retorne os valores que você vê, do nível superior para baixo.

Função

leftView(root: integer-array) → integer-array
rootinteger-array
a árvore em ordem de heap, com -1 para uma posição vazia
Retornainteger-array
o valor mais à esquerda de cada nível, começando pelo nível superior

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ó.
  • O array pode terminar com entradas extras de -1 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 = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Saída
[3, 8, 6, 1]
Explicação
8 é uma folha, então o terceiro e o quarto níveis contêm apenas 6 (índice 6) e 1 (índice 13), ambos sob o filho direito 5. Você os vê mesmo assim: [3, 8, 6, 1].
challenge icon

Para ir além

Nível d preenche os índices de 2^d-1 a 2^(d+1)-2. Você consegue montar a visualização percorrendo esses intervalos, sem fila nem recursão? Qual é o custo disso em um array preenchido?

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

Teste #1

Teste #2

Teste #3

Argumento

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

Saída Esperada

[3, 8, 6, 1]