Exercice 3 - Partie 1 · Bac Numérique et Sciences Informatiques Métropole 2023 (sujet 2)

Thème : Arbres : vocabulaire, mesures et algorithmique · Tiré du sujet Métropole France 2 (2023)

Énoncé

EXERCICE 3 (6 points)

Cet exercice porte sur les arbres binaires, les files et la programmation orientée objet.

Cet exercice comporte deux parties indépendantes.

PARTIE 1

Une entreprise stocke les identifiants de ses clients dans un arbre binaire de recherche.

On rappelle qu’un arbre binaire est composé de nœuds, chacun des nœuds possédant éventuellement un sous-arbre gauche et éventuellement un sous-arbre droit.

La taille d’un arbre est le nombre de nœuds qu’il contient. Sa hauteur est le nombre de nœuds du plus long chemin qui joint le nœud racine à l’une des feuilles. On convient que la hauteur d’un arbre ne contenant qu’un nœud vaut 1 et celle de l’arbre vide vaut 0.

Dans cet arbre binaire de recherche, chaque nœud contient une valeur, ici une chaine de caractères, qui est, avec l’ordre lexicographique (celui du dictionnaire):

strictement supérieure à toutes les valeurs des nœuds du sous-arbre gauche;

strictement inférieure à toutes les valeurs des nœuds du sous-arbre droit.

Ainsi les valeurs de cet arbre sont toutes distinctes.

On considère l’arbre binaire de recherche suivant:

1.

Donner la taille et la hauteur de l'arbre binaire de recherche de la figure 1.

2.

Recopier cet arbre après l'ajout des identifiants suivants: 'davidbg' et 'papicoeur' dans cet ordre.

3.

On décide de parcourir cet arbre pour obtenir la liste des identifiants dans l'ordre lexicographique.

Recopier la lettre correspondant au parcours à utiliser parmi les propositions suivantes:

4.

Pour traiter informatiquement les arbres binaires, nous allons utiliser une classe ABR.

Un arbre binaire de recherche, nommé abr dispose des méthodes suivantes:

abr.est_vide(): renvoie True si abr est vide et False sinon.

abr.racine(): renvoie l'élément situé à la racine de abr si abr n'est pas vide et None sinon.

abr.sg(): renvoie le sous-arbre gauche de abr s'il existe et None sinon.

abr.sd(): renvoie le sous-arbre droit de abr s'il existe et None sinon.

On a commencé à écrire une méthode récursive present de la classe ABR, où le paramètre identifiant est une chaîne de caractères et qui retourne True si identifiant est dans l'arbre et False sinon.

1 def present(self, identifiant):

2 if self.est_vide():

3 return False

4 elif self.racine() == identifiant:

5 return...

6 elif self.racine() < identifiant:

7 return self.sd()....

8 else:

9 return...

Recopier et compléter les lignes 5, 7 et 9 de cette méthode.

Énoncé: Exercice 3 - Partie 1 · Bac Numérique et Sciences Informatiques Métropole 2023 (sujet 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Donner la taille de l'arbre binaire de recherche de la figure 1.

Réponse : 5

1. Donner la hauteur de l'arbre binaire de recherche de la figure 1.

Réponse : 3

2. Recopier cet arbre après l'ajout des identifiants suivants : 'davidbg' et 'papicoeur' dans cet ordre.

Réponse : Arbre binaire de recherche complété : - `'davidbg'` : comparé à `'dfifi'` (plus petit, va à gauche), comparé à `'annieji'` (plus grand, va à droite), comparé à `'celine'` (plus grand, va à droite). `'davidbg'` devient l'enfant droit de `'celine'`. - `'papicoeur'` : comparé à `'dfifi'` (plus grand, va à droite), comparé à `'helene'` (plus grand, va à droite). `'papicoeur'` devient l'enfant droit de `'helene'`.

3. Recopier la lettre correspondant au parcours à utiliser parmi les propositions suivantes

Réponse : C - Parcours en profondeur dans l'ordre infixe

Les réponses des 3 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 3 - Arbres binaires de recherche · Métropole 2024 (sujet 1) · Exercice 4 · Métropole 2022 (sujet 1) ›

Plus d’exercices d’Arbres : vocabulaire, mesures et algorithmique