Menu
CoddyTech

Symmetric 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 ulteriori voci -1. Restituisci true se l’albero è simmetrico rispetto a una linea verticale che passa per la radice e false altrimenti. Devono corrispondere sia la struttura sia i valori.

Funzione

isSymmetric(tree: integer-array) → boolean
treeinteger-array
l’albero binario in ordine per livelli, con -1 per una posizione vuota
Restituisceboolean
vero se l'albero è speculare, falso altrimenti

Vincoli

  • 1 ≤ tree.length ≤ 32767
  • Ogni tree[i] è -1 oppure un valore con 0 ≤ tree[i] ≤ 1000.
  • tree[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 una posizione vuota sono vuoti a loro volta, e la profondità è al massimo 14.

Esempi

Input
tree = [1, 2, 2, 3, 4, 4, 3]
Output
true
Spiegazione
Piega l'albero a metà. I due 2 agli indici 1 e 2 si incontrano, i 3 esterni agli indici 3 e 6 si incontrano e i 4 interni agli indici 4 e 5 si incontrano.

lock icon+16 test nascosti all’invio

challenge icon

Per approfondire

Se la forma è speculare ma alcuni valori non lo sono, qual è il numero minimo di valori dei nodi da modificare per rendere l’albero simmetrico?

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

Caso 1

Caso 2

Caso 3

Input

tree = [1, 2, 2, 3, 4, 4, 3]

Atteso

true