algorithmique (école d'ingénieur) · Chapitre 9 · Application directe du cours
Insérer et rechercher
Arbres binaires de recherche de coût minimum · niveau 1 (application)
Énoncé
- Écrire
AB inserer(int x, AB a)qui retourne l'abr augmenté de la valeur , en distinguant quatre cas :vide(a),x == vr(a),x < vr(a)etx > vr(a). - Écrire
AB dans(int v, AB a)qui retourne, si est dans , le sous-arbre à la racine duquel se trouve , et sinon l'arbre vide. - Dessiner l'abr obtenu en insérant, dans un arbre initialement vide, les valeurs , , , , , , , , dans cet ordre. Combien de comparaisons faut-il pour trouver ? pour conclure que est absent ?
- Même question avec les insertions , , , , . Que constate-t-on ?
Corrigé
- L'insertion descend à gauche ou à droite comme une recherche, et reconstruit le chemin parcouru :
static AB inserer(int x, AB a) {
if (vide(a)) return new AB(x, null, null); // x devient une feuille
if (x == vr(a)) return a; // x est déjà dans a
if (x < vr(a)) return new AB(vr(a), inserer(x, sag(a)), sad(a));
return new AB(vr(a), sag(a), inserer(x, sad(a)));
}
- La dichotomie : chaque comparaison élimine un des deux sous-arbres.
static AB dans(int v, AB a) {
if (vide(a) || v == vr(a)) return a; // absent, ou trouvé
if (v < vr(a)) return dans(v, sag(a)); // v ne peut être qu'à gauche
return dans(v, sad(a)); // v ne peut être qu'à droite
}
- On obtient l'arbre ci-dessous, de hauteur :
(5 (3 (1 () (2 () ())) (4 () ())) (8 (7 (6 () ()) ()) (9 () ())))
Pour trouver , on le compare à , , puis : quatre comparaisons, son niveau plus un. Pour : , , , puis l'arbre vide à droite de : trois comparaisons.
- Les insertions donnent un arbre dégénéré : chaque valeur est insérée à droite de la précédente, , de hauteur . C'est une liste : une recherche y coûte jusqu'à comparaisons, et les insertions coûtent en tout , soit .
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.