Aller au contenu principal

🌳 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​

  1. 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).
  2. 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 retourne True 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.

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 :

  1. Créez un arbre à partir des valeurs suivantes, insérées dans cet ordre : 50, 30, 70, 20, 40, 60, 80

  2. Afficher et vĂ©rifier l’arbre selon les trois types de parcours.

  3. Supprimez les nƓuds suivants dans cet ordre : 20, 30, 50

  4. RĂ©affichez et revĂ©rifier l’arbre aprĂšs chaque suppression.

📝 Pour vous aidez​

Si vous ĂȘtes bloquĂ©, voici quelques ressources utiles :

attention

Attention, ne pas simplement copier-coller le code de ces ressources. Essayez de l'Ă©crire par vous-mĂȘme en vous inspirant des exemples.