Adloun

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) et x > 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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →