Per ogni nodo in un albero binario bilanciato, la differenza massima nelle altezze della sottostruttura figlio sinistra e della sottostruttura figlio destra sono al massimo 1.
L'altezza di un albero binario è la distanza dal nodo radice al figlio nodo più lontano dalla radice.
Di seguito è riportato un esempio:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Altezza dell'albero binario: 4
Di seguito sono riportati gli alberi binari e un rapporto sull'equilibrio o meno:
L'albero sopra è sbilanciato .
L'albero sopra è bilanciato .
Scrivi il programma più breve possibile che accetta come input la radice di un albero binario e restituisce un valore di falso se l'albero è sbilanciato e un valore di verità se l'albero è bilanciato.
Ingresso
La radice di un albero binario. Questo può essere sotto forma di un riferimento all'oggetto radice o anche di un elenco che è una rappresentazione valida di un albero binario.
Produzione
Restituisce il valore di verità: se l'albero è bilanciato
Restituisce il valore false: se l'albero non è bilanciato.
Definizione di un albero binario
Un albero è un oggetto che contiene un valore e altri due alberi o puntatori ad essi.
La struttura dell'albero binario è simile alla seguente:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
Se si utilizza una rappresentazione di elenco per un albero binario, potrebbe essere simile al seguente:
[root_value, left_node, right_node]
4
, l'albero rimanente è bilanciato?