Menu
CoddyTech

Balanced Binary Tree

L'array root contiene un albero binario. 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 alla fine possono esserci ulteriori voci -1.

Restituisci true se l'albero è bilanciato in altezza, ovvero se in ogni nodo le altezze dei sottoalberi sinistro e destro differiscono al massimo di 1, e false altrimenti. L'altezza di un sottoalbero è il numero di nodi sul suo percorso discendente più lungo; un sottoalbero vuoto ha altezza 0.

Funzione

isBalanced(root: integer-array) → boolean
rootinteger-array
l’albero binario in ordine per livelli, con -1 per uno spazio vuoto
Restituisceboolean
vero se le altezze dei due sottoalberi di ogni nodo differiscono al massimo di 1, falso altrimenti

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 una posizione vuota sono vuoti a loro volta e la profondità è al massimo 14.
  • I valori dei nodi sono distinti.

Esempi

Input
root = [5, 2, 9, -1, -1, 7, 11]
Output
true
Spiegazione
Il sottoalbero sinistro della radice è il singolo nodo 2, con altezza 1. Il suo sottoalbero destro 9, 7, 11 ha altezza 2. Differiscono di 1 e ogni altro nodo ha due sottoalberi della stessa altezza.
challenge icon

Per approfondire

Riesci a controllare l’albero senza ricorsione, usando uno stack esplicito?

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

Test #1

Test #2

Test #3

Argomento

root = [5, 2, 9, -1, -1, 7, 11]

Output atteso

true