Menu
CoddyTech

Top View of Binary Tree

Hai un albero binario memorizzato nell'array root in ordine heap: la radice all'indice 0, i figli dell'indice i agli indici 2*i+1 (sinistro) e 2*i+2 (destro), e -1 per una posizione vuota.

La radice si trova nella colonna 0; un figlio sinistro si trova una colonna a sinistra del genitore, mentre un figlio destro si trova una colonna a destra. Guardando dall'alto, vedi il nodo meno profondo di ciascuna colonna; in caso di parità, quello che viene prima nel suo livello da sinistra a destra (l'indice minore). Restituisci i valori che vedi, dalla colonna più a sinistra a quella più a destra.

Funzione

topView(root: integer-array) → integer-array
rootinteger-array
l’albero in ordine di heap, con -1 per una posizione vuota
Restituisceinteger-array
il valore visto dall'alto in ciascuna colonna, iniziando dalla colonna più a sinistra

Vincoli

  • 1 ≤ root.length ≤ 32767
  • Ogni 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 potrebbe terminare con voci -1 aggiuntive dopo l'ultimo nodo.
  • Entrambi i figli di un posto vuoto 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, 5, 9, 6]
Spiegazione
Da sinistra a destra, le colonne contengono 4 (colonna -2), 2 (-1), la radice 5 (0), 9 (1) e 6 (2). Anche 7 e 1 si trovano nella colonna 0, ma la radice è sopra di loro.
challenge icon

Per approfondire

Con gli oggetti nodo invece di un array, non c’è alcun indice per risolvere un pareggio. Come enunceresti la regola per i pareggi e il tuo codice di ricerca in ampiezza cambierebbe?

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

Test #1

Test #2

Test #3

Argomento

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

Output atteso

[4, 2, 5, 9, 6]