diff --git a/slides/cours_15.md b/slides/cours_15.md index f6d0a4d01b22523f8ebe8ce93ef0599f8cee605d..3ab8419c51b38c93bb6ff179feb319d055132762 100644 --- a/slides/cours_15.md +++ b/slides/cours_15.md @@ -735,6 +735,44 @@ sous-arbres de gauche et de droite. # La recherche dans un arbre binaire -* Les arbres binaires peuvent retouver une +* Les arbres binaires peuvent retrouver une information très rapidement. +* À quelle complexité? À quelle condition? + +. . . + +## Condition + +* Le contenu de l'arbre est **ordonné** (il y a une relation d'ordre (`<`, `>` + entre les éléemts). + +## Complexité + +* La profondeur de l'arbre (ou le $\mathcal{O}(\log_2(N))$) + +. . . + +## Exemple: les arbres lexicographiques + +* Chaque noeud contient une information de type ordonné, la **clé**, +* Par construction, pour chaque noeud $N$: + * Toutes clé du sous-arbre à gauche de $N$ sont inférieurs à la clé de $N$. + * Toutes clé du sous-arbre à droite de $N$ sont inférieurs à la clé de $N$. + +# Algorithme de recherche + +* Retourner le noeud si la clé est trouvée dans l'arbre. + +```python +arbre recherche(clé, arbre) + tante que est_non_vide(arbre) + si clé < arbre.clé + arbre = gauche(arbre) + sinon si clé > arbre.clé + arbre = droite(arbre) + sinon + retourne arbre + retourne NULL + +``` [^1]: Copyright cours de mathématiques pendant trop d'années.