Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Ricevi un albero binario memorizzato nell’array root. La radice si trova all’indice 0, i figli dell’indice i si trovano in 2*i+1 (sinistra) e 2*i+2 (destra), -1 indica una posizione vuota e l’array può terminare con ulteriori voci -1.

Restituisci i valori dei nodi livello per livello in ordine zigzag: il livello della radice da sinistra a destra, quello successivo da destra a sinistra e così via, alternando fino al livello più profondo. Questa visita è anche chiamata visita per livelli a spirale.

Funzione

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
l'albero in ordine di heap, con -1 per una posizione vuota
Restituisceinteger-2d-array
un elenco di valori per livello, prima il livello superiore, alternando da sinistra a destra e da destra a sinistra

Vincoli

  • 1 ≤ root.length ≤ 32767
  • Ogni root[i] è -1 oppure un valore con 0 ≤ root[i] ≤ 104.
  • I valori dei nodi sono distinti.
  • 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 = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Output
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Spiegazione
Leggendo da sinistra a destra, i livelli sono 8; 12, 5; 1, 9, 14; 4, 2, 11. I livelli 1 e 3 procedono all’indietro: [5, 12] e [11, 2, 4].
challenge icon

Per approfondire

Riesci a mettere ogni valore direttamente nella sua posizione finale nella propria riga, senza invertire nulla e senza usare una seconda pila?

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

Test #1

Test #2

Test #3

Argomento

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

Output atteso

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]