Arbre binaire de recherche
Arbre binaire de recherche (ABR)
Un arbre binaire de recherche (ABR) est un arbre binaire vide ou possèdant ces propriétés:
- le max des clés de son sag est inférieur à sa clé
- le min des clés de son sad est supérieur à sa clé
- son sag et son sad sont des abr
Définition équivalente: Pour chaque noeud d'un ABR:
- Toutes les clés de son sag sont inférieures ou égales à sa clé
- Toutes les clés de son sad sont supérieures ou égales à sa clé
L'objectif est ici de disposer d'une structure qui nous permette de rechercher de l'information très rapidement.
On considère dans le cours que les clés sont uniques, ce qui est habituellement le cas, mais on pourrait aussi prendre en compte des clés dupliquées, auquel cas, on travaillerait sur des inégalités au sens large.
graph TD;
A[8] --> B[4]
A --> C[12]
B --> D[2]
B --> E[6]
C --> F[10]
C --> G[14]
D --> H[1]
D --> I[3]
E --> J[5]
E --> K[7]
F --> L[9]
F --> M[11]
G --> N[13]
G --> O[15]
Exercices
-
Dessiner 3 ABR où, partant d'un arbre vide, on insère successivement les valeurs:
- 3, 7, 1, 9, 4, 8, 2, 5, 6
- 6, 2, 9, 1, 5, 3, 8, 4, 7
- 9, 5, 3, 7, 2, 6, 1, 8, 4
-
Ecrire une fonction
est_abr[T: Comparable](a: ArbreBin[T]) -> bool - Ecrire une fonction
insere_abr[T: Comparable](e: int, a: arbrebin) -> arbrebin - Ecrire une fonction
recherche_abr[T: Comparable](e: int, a: arbrebin) -> bool -
Discussion: Quelle est la complexité de
recherche_abr?- Pour un arbre filiforme
- Pour un arbre parfait
-
Implémentez ces fonctions pour la version mutable (important)