Menu


1NSI

Les exercices python à connaître

programme de première
E1 : listes
E2 : listes
E3 : listes
E4 : tri par insertion
E5 : tri par séléction
E6 : dictionnaires / string
E7 : tuple
E8 : boucle / booléen / liste
E9 : string
E10 : dictionnaire / fonctions
E11 : booléens / listes
récursivité
E1 : somme d'entiers
E2 : chiffres romains
E3 : factorielle
E4 : rendu de monnaie
POO
E1 : la classe Chien
E2 : carrés semi-magiques
E3 : filtre sur une pile
E4 : durées en POO
Arbres
E1: Hauteur et taille d'un arbre
E2: parcours 1
E3: parcours 2
E4: Recherche dans un ABR
E5: Arbre binaire additif
E6: Arbre binaire de recherche
Diviser pour régner
E1 : sommet d'un tableau
E2 : Indice d'une panne
E3 : calcul d'une puissance
Sécurisation des communications
E1 : code César
E2 : Vigenre

Arbre binaire de recherche

On donne une partie de la classe ABR pour implémenter les Arbres Binaires de Recherche sans doublon : un ensemble fini de nœuds, éventuellement vide, organisés de manière hiérarchique. C'est une arborescence d'éléments comparables.
Un ABR est une structure de nature récursive :

  • soit c'est un ABR vide,
  • soit il possède un nœud racine qui a les attributs :
    • gauche : un sous-ABR à gauche
    • element : un élément comparable aux autres
    • droite : un sous-ABR à droite
    • l'élément de la racine est strictement supérieur à celui du sous-ABR gauche (s'il est non vide)
    • l'élément de la racine est strictement inférieur à celui du sous-ABR droite (s'il est non vide)

Dans l'implémentation suivante :
  • Noeud est une classe qui possède trois attributs :
    • gauche
    • element
    • droite
  • ABR() initialise un ABR vide.
  • Un ABR, vide ou non, possède les méthodes dont le nom est explicite :
    • est_vide(self) qui renvoie un booléen
    • insere(self, element) qui agit sur l'ABR
    • est_present(self, element) qui renvoie un booléen
    • affichage_infixe(self) qui renvoie une chaine de caractères composée des affichages des éléments et du séparateur |, suite à un parcours infixe.

Exemples :
>>> nombres = ABR()
>>> nombres.est_vide()
True
>>> for x in [1, 3, 7, 9, 9]: nombres.insere(x)
>>> not nombres.est_vide()
True
>>> nombres.affichage_infixe()
'|1|3|7|9|'
>>> nombres.est_present(7)
True
>>> nombres.est_present(8)
False
>>> fruits_ranges = ABR()
>>> fruits_ranges.est_vide()
True
>>> panier = ["kiwi", "pomme", "abricot", "mangue", "poire"]
>>> for fruit in panier: fruits_ranges.insere(fruit)
>>> fruits_ranges.est_vide()
False
>>> fruits_ranges.affichage_infixe()
'|abricot|kiwi|mangue|poire|pomme|'
>>> fruits_ranges.est_present("pomme")
True
>>> fruits_ranges.est_present("cerise")
False

Compléter les méthodes ci-dessous.

source : https://codex.forge.apps.education.fr