Menu
CoddyTech

Invert Binary Tree

Ti viene fornito un albero binario memorizzato nell'array tree in ordine per livelli. La radice si trova all'indice 0, i figli del nodo all'indice i si trovano agli indici 2*i+1 (sinistro) e 2*i+2 (destro), -1 indica una posizione vuota e l'array può terminare con voci -1 aggiuntive.

Inverti l'albero: scambia il figlio sinistro e quello destro di ogni nodo, così l'intero albero diventa la sua immagine speculare. Restituisci l'albero invertito nello stesso formato, senza voci -1 alla fine.

Funzione

invertTree(tree: integer-array) → integer-array
treeinteger-array
l'albero binario in ordine per livelli, con -1 per uno spazio vuoto
Restituisceinteger-array
l'albero speculare in ordine per livelli, senza voci -1 finali

Vincoli

  • 1 ≤ tree.length ≤ 16383
  • Ogni tree[i] è -1 oppure un valore con 0 ≤ tree[i] ≤ 1000.
  • tree[0] non è mai -1, quindi l’albero ha almeno un nodo.
  • The array può terminare con voci -1 aggiuntive dopo l’ultimo nodo.
  • Entrambi i figli di una posizione vuota sono vuoti a loro volta e la profondità è al massimo 14.

Esempi

Input
tree = [5, 3, 8, 1, 4, -1, 9]
Output
[5, 8, 3, 9, -1, 4, 1]
Spiegazione
I figli della radice 3 e 8 si scambiano di posto. Sotto di loro, 1 e 4, che si trovavano sotto 3, tornano come 4 e 1, e 8, che aveva solo un figlio destro 9, ora ce l’ha a sinistra.

lock icon+14 test nascosti all’invio

challenge icon

Per approfondire

Come verificheresti se un albero è il proprio specchio, usando le stesse coppie di indici ma senza costruire la copia invertita?

Ripristina il codice
def invertTree(tree):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

tree = [5, 3, 8, 1, 4, -1, 9]

Atteso

[5, 8, 3, 9, -1, 4, 1]