đł Arbre binaire
đŻ Objectifs pĂ©dagogiquesâ
- Comprendre les structures de données de type arbre binaire.
- Savoir implémenter un arbre binaire en Python.
- Apprendre à parcourir un arbre binaire (préfixe, infixe, postfixe).
- Savoir insĂ©rer et supprimer des nĆuds dans un arbre binaire.
đ ĂnoncĂ©â
Vous allez crĂ©er un arbre binaire de recherche (Binary Search Tree - BST), câest-Ă -dire un arbre binaire tel que pour chaque nĆud :
- les valeurs du sous-arbre gauche sont strictement infĂ©rieures Ă la valeur du nĆud,
- les valeurs du sous-arbre droit sont supĂ©rieures ou Ă©gales Ă la valeur du nĆud.
đ§© Partie 1 â ImplĂ©mentation de la structureâ
-
Implémentez une classe
Node
reprĂ©sentant un nĆud de lâarbre avec :- un attribut
val
(valeur), - un attribut
left
(fils gauche), - un attribut
right
(fils droit).
- un attribut
-
Implémentez une classe
BinarySearchTree
avec :- un attribut
root
(racine de lâarbre), - une mĂ©thode
insert(val)
pour insérer une valeur selon les rÚgles du BST, - une méthode
delete(val)
pour supprimer un nĆud (voir note plus bas). - une mĂ©thode
contains(val)
qui retourneTrue
si la valeur est dans lâarbre. - une mĂ©thode
height()
qui retourne la hauteur de lâarbre. C'est-Ă -dire le nombre maximal de niveaux de l'arbre, oĂč la racine est au niveau 0.
- un attribut
La suppression doit gérer trois cas :
- Le nĆud Ă supprimer est une feuille (aucun enfant),
- Le nĆud a un seul enfant (remplacer par lâenfant),
- Le nĆud a deux enfants (remplacer par son successeur immĂ©diat, câest-Ă -dire la plus petite valeur de son sous-arbre droit).
đ Partie 2 â Parcours de lâarbreâ
Ajoutez Ă la classe BinarySearchTree
trois mĂ©thodes pour parcourir lâarbre et afficher les valeurs dans lâordre appropriĂ© :
traverse_inorder()
: parcours infixe (gauche, racine, droite),traverse_preorder()
: parcours préfixe (racine, gauche, droite),traverse_postorder()
: parcours postfixe (gauche, droite, racine).
đ§Ș Partie 3 â Tests et dĂ©monstrationâ
Créez des tests pour vérifier le bon fonctionnement de votre implémentation. Par exemple :
-
Créez un arbre à partir des valeurs suivantes, insérées dans cet ordre :
50, 30, 70, 20, 40, 60, 80
-
Afficher et vĂ©rifier lâarbre selon les trois types de parcours.
-
Supprimez les nĆuds suivants dans cet ordre :
20
,30
,50
-
RĂ©affichez et revĂ©rifier lâarbre aprĂšs chaque suppression.
đ Pour vous aidezâ
Si vous ĂȘtes bloquĂ©, voici quelques ressources utiles :
Attention, ne pas simplement copier-coller le code de ces ressources. Essayez de l'Ă©crire par vous-mĂȘme en vous inspirant des exemples.