Para cada nodo en un árbol binario equilibrado, la diferencia máxima en las alturas del subárbol secundario izquierdo y el subárbol secundario derecho es como máximo 1.
La altura de un árbol binario es la distancia desde el nodo raíz al nodo hijo que está más alejado de la raíz.
A continuación se muestra un ejemplo:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Altura del árbol binario: 4
Los siguientes son árboles binarios y un informe sobre si están equilibrados o no:
El árbol de arriba está desequilibrado .
El árbol de arriba es equilibrado. .
Escriba el programa más corto posible que acepte como entrada la raíz de un árbol binario y devuelva un valor falsey si el árbol está desequilibrado y un valor verdadero si el árbol está equilibrado.
Entrada
La raíz de un árbol binario. Esto puede ser en forma de una referencia al objeto raíz o incluso una lista que es una representación válida de un árbol binario.
Salida
Devuelve el valor verdadero: si el árbol está equilibrado
Devuelve el valor de falsey: si el árbol es un equilibrado.
Definición de un árbol binario
Un árbol es un objeto que contiene un valor y otros dos árboles o punteros a ellos.
La estructura del árbol binario se parece a la siguiente:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
Si usa una representación de lista para un árbol binario, puede tener un aspecto similar al siguiente:
[root_value, left_node, right_node]
4
, ¿está equilibrado el árbol restante?