Pour chaque nœud dans un arbre binaire équilibré, la différence maximale dans les hauteurs du sous-arbre enfant gauche et du sous-arbre enfant droit est au plus 1.
La hauteur d'un arbre binaire est la distance entre le nœud racine et le nœud enfant le plus éloigné de la racine.
Voici un exemple:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Hauteur de l'arbre binaire: 4
Voici des arbres binaires et un rapport indiquant s'ils sont équilibrés ou non:
L'arbre ci-dessus est déséquilibré .
L'arbre ci-dessus est équilibré .
Écrivez le programme le plus court possible qui accepte en entrée la racine d'un arbre binaire et renvoie une valeur de falsey si l'arbre est déséquilibré et une valeur véridique si l'arbre est équilibré.
Contribution
La racine d'un arbre binaire. Cela peut être sous la forme d'une référence à l'objet racine ou même d'une liste qui est une représentation valide d'un arbre binaire.
Production
Renvoie une valeur véridique: si l'arbre est équilibré
Retourne la valeur de falsey: si l'arbre n'est pas équilibré.
Définition d'un arbre binaire
Un arbre est un objet qui contient une valeur et deux autres arbres ou pointeurs vers eux.
La structure de l'arbre binaire ressemble à ceci:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
Si vous utilisez une représentation de liste pour un arbre binaire, elle peut ressembler à ceci:
[root_value, left_node, right_node]
4
, l'arbre restant est-il équilibré?