Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| tc_info:tp7 [2019/09/28 13:59] – [Arbre de recherche] edauce | tc_info:tp7 [2019/09/28 16:17] (Version actuelle) – edauce | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ==== Arbre Binaire de Recherche (ABR) ==== | ||
| + | |||
| + | Un arbre binaire est ici défini comme suit : | ||
| + | * un arbre vide correspond à la valeur '' | ||
| + | * La racine d'un arbre non vide est une liste constituée de 3 éléments | ||
| + | * la valeur | ||
| + | * la racine du sous-arbre gauche | ||
| + | * la racine du sous-arbre droit | ||
| + | |||
| + | Un arbre binaire de recherche respecte de plus la contrainte suivante: | ||
| + | * pour tout nœud de l' | ||
| + | * les valeurs situées dans le sous-arbre gauche sont plus petites que la valeur du nœud | ||
| + | * les valeurs situées dans le sous-arbre droit sont plus grandes que la valeur du nœud | ||
| + | |||
| + | Nous implémentons dans ce TP un arbre binaire de recherche. | ||
| + | |||
| + | Ouvrez l' | ||
| + | |||
| + | Dans ce projet, créez un fichier python '' | ||
| + | |||
| + | === 1. Pour commencer === | ||
| + | |||
| + | L' | ||
| + | |||
| + | <code python> | ||
| + | INDEX = 0 | ||
| + | GAUCHE = 1 | ||
| + | DROIT = 2 | ||
| + | </ | ||
| + | |||
| + | * Créez une fonction '' | ||
| + | * Testez cette fonction dans le fichier de test (vérifiez que l' | ||
| + | * Créez une fonction '' | ||
| + | * Testez cette fonction dans le fichier de test (vérifiez que la valeur contenue dans la feuille est correcte, et que les fils gauche et droit sont nuls) | ||
| + | |||
| + | === 2. Insérer des valeurs === | ||
| + | |||
| + | L' | ||
| + | |||
| + | < | ||
| + | algo : insérer_rec | ||
| + | données : | ||
| + | * racine | ||
| + | * val | ||
| + | début: | ||
| + | si racine est nul: | ||
| + | retourner feuille(val) | ||
| + | sinon: | ||
| + | si val < racine[INDEX]: | ||
| + | racine[GAUCHE] <-- insérer_rec(racine[GAUCHE], | ||
| + | sinon: | ||
| + | racine[DROIT] <-- insérer_rec(racine[DROIT], | ||
| + | retourner racine | ||
| + | </ | ||
| + | |||
| + | * Ajoutez la fonction '' | ||
| + | * Testez-la à l'aide du fichier de test, en particulier: | ||
| + | * vérifier que l' | ||
| + | * vérifiez qu' | ||
| + | * affichez l' | ||
| + | |||
| + | === 3. Affichage en ordre === | ||
| + | Écrivez et testez une fonction qui affiche les valeurs de l' | ||
| + | |||
| + | === 4. Recherche === | ||
| + | * Écrivez une fonction de recherche récursive '' | ||
| + | * Testez cette fonction dans le fichier de tests | ||
| + | |||
| + | === 5. Suppression === | ||
| + | * Ecrivez et testez une fonction '' | ||
| + | * Aidez-vous de la fonction '' | ||
| + | * Testez cette fonction dans le fichier de tests | ||
| + | <note tip> | ||
| + | PS : si vous avez le temps, vous pouvez également tester la suppression itérative vue en TD. | ||
| + | </ | ||
| + | === 6. Affichage en arbre === | ||
| + | |||
| + | Pour bien comprendre l' | ||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |23-| | ||
| + | | ||
| + | | ||
| + | | ||
| + | 10-| | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |3--| | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | [[tc_info: | ||