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 14:04] – [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: | ||