Exercice 2 - Arbres binaires · Bac Numérique et Sciences Informatiques Amérique du Nord 2026 (jour 2)
Thème : Arbres : vocabulaire, mesures et algorithmique · Tiré du sujet Jour 2 (2026)
Énoncé
Exercice 2 (6 points)
Cet exercice porte sur la programmation Python en général, la programmation orientée objet en particulier et la structure de données d'arbre.
La WTA (Women’s Tennis Association) est l’instance dirigeante du tennis professionnel international féminin, responsable de l’organisation du circuit « WTA Tour » et de l’établissement des classements mondiaux des joueuses. Dans cet exercice, on ne considère que des matchs de tennis en simple, c’est-à-dire des matchs qui opposent uniquement deux joueuses.
Partie A
On dispose d’une classe Joueuse pour modéliser une joueuse de tennis professionnelle du circuit WTA.
class Joueuse:
def __init__(self, nom, prenom, pays, age, point):
''' nom, prenom et pays sont de type str,
age et point de type int '''
self.nom = nom
self.prenom = prenom
self.pays = pays
self.age = age
# nombre de points WTA
self.point = point
# nombre de victoires
self.victoire = 0
# nombre de défaites
self.defaite = 0
On considère les objets déjà instanciés gauff, paloni, sabalenka et swiatek de la classe Joueuse représentant respectivement les joueuses:
Gauff Coco, américaine, âgée de 20 ans et ayant 6063 points WTA;
Paloni Marta, espagnole, âgée de 23 ans et ayant 4843 points WTA;
Sabalenka Aryna, biélorusse, âgée de 25 ans et ayant 10541 points WTA;
Swiatek Iga, polonaise, âgée de 22 ans et ayant 7470 points WTA.
Partie B
Afin de pouvoir modéliser chaque tour d'un tournoi de tennis à partir des quarts de finale uniquement, on décide d'utiliser un arbre binaire.
7.
Justifier qu'un tournoi de tennis peut effectivement être modélisé à l'aide d'un arbre binaire.
On décide d'implémenter un arbre binaire à l'aide de la classe Arbre ci-dessous:
class Arbre:
def __init__(self, racine, gauche, droit):
self.racine = racine
self.gauche = gauche
self.droit = droit
où self.racine est un objet de la classe Match, self.gauche et self.droit, des objets de la classe Arbre.
Dans le cas du tournoi de Madrid 2025 on connaît les matchs du tournoi à partir des quarts de finale, où pilar, inie, jabeur sont des objets de la classe Joueuse:
# quarts de finale
Q1 = Match("Quart de finale 1", gauff, pilar)
Q2 = Match("Quart de finale 2", paloni, inie)
Q3 = Match("Quart de finale 3", pegula, sabalenka)
Q4 = Match("Quart de finale 4", swiatek, jabeur)
# demi-finale
D1 = Match("Demi-finale 1", None, None)
D2 = Match("Demi-finale 2", None, None)
# finale
F = Match("Finale", None, None)
La première demi-finale D1 verra s'affronter les joueuses victorieuses des quarts de finales Q1 et Q2.
La seconde demi-finale D2 verra s'affronter les joueuses victorieuses des quarts de finales Q3 et Q4.
La finale F verra s'affronter les joueuses victorieuses des demi-finales D1 et D2.
8.
Instancier la variable tournoi de la classe Arbre représentant ce tournoi depuis les quarts de finale en passant par les demi-finales jusqu'à la finale.
Dès qu'un match est joué, et donc dès que la gagnante est connue, on souhaite mettre à jour le match du tour suivant. Par exemple le premier quart de finale Q1 s'est terminé sur le score de 6-4, 7-5, en faveur de la joueuse gauff. Elle participera donc en tant que joueuse1 au premier match des demi-finales D1.
Q1.resultat_match([(6, 4), (7, 5)])
9.
Compléter l'instruction suivante afin de mettre à jour dans tournoi la première joueuse de la première demi-finale comme étant gauff.
tournoi.
= gauff
Cette façon de mettre à jour le tournoi n'est pas satisfaisante, on souhaite automatiser cette tâche à l'aide d'une méthode mise_a_jour de la classe Arbre qui parcourt l'arbre et dès que l'on rencontre un match dont la gagnante est connue, on la fait passer au tour suivant si ce n'est pas déjà fait. Cette méthode doit être récursive.
10.
Rappeler ce qu'est un programme récursif.
11.
Recopier et compléter les lignes 6, 7, 13, 14 et 16 du code ci-dessous de la méthode mise_a_jour permettant de compléter automatiquement les matchs du tournoi en les mettant à jour à partir des résultats des matchs des tours précédents.
1 def mise_a_jour(self):
2 """Met à jour les matchs de l'arbre"""
3 if self.racine.joueuse1 is None:
4 if self.gauche is not None:
5 # mise à jour si gagnante à gauche
6 if...:
7... = self.gauche.racine.gagnante
8 else:
9 self.gauche.mise_a_jour()
10 if self.racine.joueuse2 is None:
11 if self.droit is not None:
12 # mise à jour si gagnante à droite
13 if...:
14... = self.droit.racine.gagnante
15 else:
16...

Corrigé
Corrigé proposé par AprenAI (non officiel)
7. Justifier qu'un tournoi de tennis peut effectivement être modélisé à l'aide d'un arbre binaire.
Réponse : Chaque match (sauf les quarts de finale initiaux) oppose exactement deux vainqueurs issus de deux matchs du tour précédent. La finale constitue la racine de l'arbre, et chaque nœud interne (match) a au plus deux enfants (les deux matchs qualificatifs correspondants), ce qui correspond à la définition d'un arbre binaire.
8. Instancier la variable tournoi de la classe Arbre représentant ce tournoi depuis les quarts de finale en passant par les demi-finales jusqu'à la finale.
Réponse : ```python tournoi = Arbre(F, Arbre(D1, Arbre(Q1, None, None), Arbre(Q2, None, None)), Arbre(D2, Arbre(Q3, None, None), Arbre(Q4, None, None))) ```
9. Compléter l'instruction suivante afin de mettre à jour dans tournoi la première joueuse de la première demi-finale comme étant gauff : tournoi. ... = gauff
Réponse : gauche.racine.joueuse1
10. Rappeler ce qu'est un programme récursif.
Réponse : Un programme (ou une fonction/méthode) récursif est un programme dont la définition fait référence à lui-même, c'est-à-dire qui s'appelle lui-même lors de son exécution (avec une condition d'arrêt ou cas de base pour terminer).
11. Ligne 6 : condition après if
Réponse : ```python self.gauche.racine.gagnante is not None ```
Les réponses des 4 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
‹ Exercice 1 - Parties B et C · Amérique du Nord 2026 (jour 1) · Exercice 1 · Amérique du Nord 2025 (jour 1) ›
Plus d’exercices d’Arbres : vocabulaire, mesures et algorithmique
- Exercice 1 - Parties B et C · Amérique du Nord 2026 (jour 1)
- Exercice 1 · Amérique du Nord 2025 (jour 1)
- Exercice 1 - Arbres binaires · Amérique du Nord 2025 (jour 2)
- Exercice 2 · Amérique du Nord 2025 (jour 2 bis)
- Exercice 3 - Arbres binaires de recherche · Amérique du Nord 2023 (jour 1)
- Exercice 2 · Amérique du Nord 2023 (jour 2)
- Exercice 3 · Amérique du Nord 2022 (jour 1)
- Exercice 1 - Arbres · Amérique du Nord 2022 (jour 2)
- Exercice 4 · Amérique du Nord 2022 (jour 2)
- Exercice 4 · Amérique du Nord 2021 (jour 1)