NSI (terminale) · Chapitre 3 · Exercice de TD
Problème — Suppression d'une valeur dans un ABR
Les arbres · niveau 3 (difficile)
Énoncé
Problème — Suppression d'une valeur dans un ABR.
La suppression dans un ABR est l'opération la plus délicate, car retirer un nœud ne doit pas casser la propriété d'ordre. Écrire une fonction supprimer(arbre, x) qui supprime la valeur x d'un ABR et renvoie la racine de l'arbre modifié.
Corrigé
On localise d'abord le nœud à supprimer comme pour une recherche. Trois cas se présentent une fois trouvé :
- le nœud est une feuille : on le remplace par
None; - le nœud a un seul enfant : on le remplace par cet enfant ;
- le nœud a deux enfants : on le remplace par son successeur (la plus petite valeur de son sous-arbre droit), que l'on supprime ensuite de ce sous-arbre.
def min_valeur(arbre):
# plus petite valeur d'un ABR : le noeud le plus a gauche
while arbre.gauche is not None:
arbre = arbre.gauche
return arbre.valeur
def supprimer(arbre, x):
if arbre is None:
return None
if x < arbre.valeur:
arbre.gauche = supprimer(arbre.gauche, x)
elif x > arbre.valeur:
arbre.droit = supprimer(arbre.droit, x)
else:
# noeud trouve : on traite les trois cas
if arbre.gauche is None:
return arbre.droit # 0 ou 1 enfant (a droite)
if arbre.droit is None:
return arbre.gauche # 1 enfant (a gauche)
# deux enfants : on prend le successeur
succ = min_valeur(arbre.droit)
arbre.valeur = succ
arbre.droit = supprimer(arbre.droit, succ)
return arbre
Dans le cas à deux enfants, le successeur est la plus petite valeur du sous-arbre droit : c'est la seule valeur qui peut prendre la place du nœud supprimé tout en conservant la propriété d'ordre (toutes les valeurs à gauche lui restent inférieures, toutes celles à droite supérieures). La suppression a un coût de , soit pour un arbre équilibré.
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.