Au programme de ce chapitre
- I. Définition et propriété fondamentale
- II. Insertion et recherche dans un ABR
- III. Complexité : le rôle décisif de l'équilibrage
- Savoir-faire
- Exercices types corrigés
- Teste-toi — vrai ou faux ?
- Pièges fréquents et astuces
- À retenir
La définition à retenir
Un exemple corrigé
python3, en insérant successivement 47, 23, 68, 12, 35, 59, 81, 40 :
>>> class NoeudABR:
... def __init__(self, cle):
... self.cle = cle
... self.gauche = None
... self.droit = None
...
>>> def inserer(racine, cle):
... if racine is None:
... return NoeudABR(cle)
... if cle < racine.cle:
... racine.gauche = inserer(racine.gauche, cle)
... elif cle > racine.cle:
... racine.droit = inserer(racine.droit, cle)
... return racine
...
>>> def parcours_infixe(racine):
... if racine is None:
... return []
... return parcours_infixe(racine.gauche) + [racine.cle] + parcours_infixe(racine.droit)
...
>>> valeurs = [47, 23, 68, 12, 35, 59, 81, 40]
>>> racine = None
>>> for v in valeurs:
... racine = inserer(racine, v)
...
>>> parcours_infixe(racine)
[12, 23, 35, 40, 47, 59, 68, 81]
On retrouve bien les huit clés triées par ordre croissant. La racine reste 47 : c'est la première clé insérée, elle n'est jamais déplacée par les insertions suivantes.Les erreurs fréquentes à éviter
L'astuce du prof
Exercices corrigés
Cherche d'abord seul, puis ouvre la correction.
Exercice 1
Voir la correction
Exercice 2
