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
programmation dynamique
E1:Nombres de Delannoy
E2:Communication des acacias
E2:Mineur (le meilleur filon)

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