Menu
CoddyTech

Bottom View of Binary Tree

L’array root contiene un albero binario: la radice all’indice 0, i figli dell’indice i agli indici 2i+1 (sinistra) e 2i+2 (destra), -1 per una posizione vuota e, eventualmente, altre voci -1 alla fine.

La radice si trova nella colonna 0; un passo a sinistra sposta di una colonna a sinistra, un passo a destra di una colonna a destra. Vista dal basso, ogni colonna mostra il nodo più profondo e, in caso di parità, l’ultimo su quel livello letto da sinistra a destra (l’indice più grande). Restituisci i valori che vedi, iniziando dalla colonna più a sinistra.

Funzione

bottomView(root: integer-array) → integer-array
rootinteger-array
l’albero in ordine di heap, con -1 per una posizione vuota
Restituisceinteger-array
il valore osservato dal basso in ciascuna colonna, partendo dalla colonna più a sinistra

Vincoli

  • 1 ≤ root.length ≤ 32767
  • Ciascun root[i] è -1 oppure un valore con 0 ≤ root[i] ≤ 104, e nessun valore compare due volte.
  • root[0] non è mai -1, quindi l’albero ha almeno un nodo.
  • L’array può terminare con voci -1 aggiuntive dopo l’ultimo nodo.
  • Entrambi i figli di una posizione vuota sono vuoti anch’essi, e l’albero ha al massimo 14 livelli.

Esempi

Input
root = [5, 2, 9, 4, 7, 1, 6]
Output
[4, 2, 1, 9, 6]
Spiegazione
La colonna 0 contiene 5 e, due livelli più in basso, 7 (indice 4) e 1 (indice 5). 1 viene dopo sul livello condiviso, quindi è quello che appare. Le colonne -2, -1, 1 e 2 contengono 4, 2, 9 e 6.
challenge icon

Per approfondire

Se in caso di parità al livello più profondo di una colonna dovrebbero essere restituiti tutti i nodi a pari merito, da sinistra a destra, come cambierebbe la versione con ricerca in ampiezza? Quali nodi restituirebbe la colonna 0 dell’esempio 1?

Ripristina il codice
def bottomView(root):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

[4, 2, 1, 9, 6]