NSI (terminale) · Chapitre 3 · Exercice de TD
Vérifier qu'un arbre est un ABR
Les arbres · niveau 3 (difficile)
Énoncé
Vérifier qu'un arbre est un ABR.
Écrire une fonction est_abr(arbre) qui renvoie True si un arbre binaire respecte la propriété d'ABR.
Corrigé
Il ne suffit pas de comparer chaque nœud à ses enfants directs : il faut que toutes les valeurs d'un sous-arbre respectent un intervalle autorisé. On transmet donc une borne minimale et une borne maximale, resserrées à chaque descente.
def est_abr(arbre, mini=float('-inf'), maxi=float('inf')):
if arbre is None:
return True
if not (mini < arbre.valeur < maxi):
return False
return (est_abr(arbre.gauche, mini, arbre.valeur)
and est_abr(arbre.droit, arbre.valeur, maxi))
En descendant à gauche, la valeur du nœud devient la nouvelle borne maximale ; en descendant à droite, elle devient la nouvelle borne minimale. Coût .
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.