Menu
CoddyTech

Boundary Traversal of Binary Tree

L’array root contiene un albero binario in ordine per livelli: la radice all’indice 0, i figli dell’indice i agli indici 2i+1 (sinistro) e 2i+2 (destro), -1 per una posizione vuota e, eventualmente, ulteriori elementi -1 alla fine. Una foglia è un nodo senza figli.

Restituisci il contorno in senso antiorario a partire dalla radice:

  1. La radice.
  2. Il contorno sinistro, dall’alto verso il basso: partendo dal figlio sinistro della radice, prosegui con il figlio sinistro, se presente; altrimenti, con il figlio destro. Fermati prima di una foglia.
  3. Tutte le foglie, da sinistra a destra.
  4. Il contorno destro, dal basso verso l’alto: il contrario di quello sinistro, partendo dal figlio destro della radice.

Nessun nodo viene elencato due volte, quindi un albero con un solo nodo restituisce soltanto la radice.

Funzione

boundaryTraversal(root: integer-array) → integer-array
rootinteger-array
l’albero binario in ordine di livello, con -1 per una posizione vuota
Restituisceinteger-array
i valori limite, in senso antiorario a partire dalla radice

Vincoli

  • 1 ≤ root.length ≤ 32767
  • Ogni root[i] è -1 oppure un valore con 0 ≤ root[i] ≤ 105.
  • 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 un punto vuoto sono vuoti anch’essi e la profondità è al massimo 14.
  • I valori dei nodi sono distinti.

Esempi

Input
root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]
Output
[7, 3, 1, 4, 6, 8, 9]
Spiegazione
Dopo la radice 7, il confine sinistro è 3: il suo figlio 1 è una foglia. Le foglie sono 1, 4, 6, 8. Il confine destro è 9, sopra la foglia 8.
challenge icon

Per approfondire

Come elencheresti il contorno in senso orario: la radice, il bordo destro dall’alto verso il basso, le foglie da destra a sinistra, poi il bordo sinistro dal basso verso l’alto?

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

Test #1

Test #2

Test #3

Argomento

root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]

Output atteso

[7, 3, 1, 4, 6, 8, 9]