Menu
CoddyTech

Balanced Binary Tree

Le tableau root contient un arbre binaire. La racine se trouve à l’indice 0, les enfants de l’indice i se trouvent aux indices 2*i+1 (à gauche) et 2*i+2 (à droite), -1 indique un emplacement vide, et des entrées -1 supplémentaires peuvent se trouver à la fin.

Retournez true si l’arbre est équilibré en hauteur, c’est-à-dire si, à chaque nœud, les hauteurs des sous-arbres gauche et droit diffèrent d’au plus 1, et false sinon. La hauteur d’un sous-arbre est le nombre de nœuds sur son plus long chemin descendant ; un sous-arbre vide a une hauteur de 0.

Fonction

isBalanced(root: integer-array) → boolean
rootinteger-array
l’arbre binaire dans l’ordre par niveau, avec -1 pour une position vide
Renvoieboolean
vrai si les hauteurs des deux sous-arbres de chaque nœud diffèrent d’au plus 1, faux sinon

Contraintes

  • 1 ≤ root.length ≤ 32767
  • Chaque root[i] vaut -1 ou une valeur telle que 0 ≤ root[i] ≤ 105.
  • root[0] n'est jamais -1, donc l'arbre comporte au moins un nœud.
  • Le tableau peut se terminer par des entrées -1 supplémentaires après le dernier nœud.
  • Les deux enfants d’un emplacement vide sont également vides, et la profondeur est d’au plus 14.
  • Les valeurs des nœuds sont distinctes.

Exemples

Entrée
root = [5, 2, 9, -1, -1, 7, 11]
Sortie
true
Explication
Le sous-arbre gauche de la racine est constitué du seul nœud 2, de hauteur 1. Son sous-arbre droit, composé de 9, 7 et 11, a une hauteur de 2. Ils diffèrent de 1, et tous les autres nœuds ont deux sous-arbres de même hauteur.
challenge icon

Pour aller plus loin

Peux-tu vérifier l’arbre sans récursion, en utilisant une pile explicite ?

Réinitialiser le code
def isBalanced(root):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

true