Exercice 3 · Bac Numérique et Sciences Informatiques Polynésie 2021 (jour 2)

Thème : Arbres : vocabulaire, mesures et algorithmique · Tiré du sujet Jour 2 (2021)

Énoncé

EXERCICE 3: Arbre binaire de recherche (4 points)

Cet exercice traite principalement du thème « algorithmique, langages et programmation » et en particulier les arbres binaires de recherche. La première partie aborde les arbres en mode débranché via l'application d'un algorithme sur un exemple. La suivante porte sur la programmation orientée objet. La dernière partie fait le lien avec les algorithmes de tri.

Partie A: Étude d'un exemple

Considérons l'arbre binaire de recherche ci-dessous.

1.

Indiquer quelle valeur a le nœud racine et quels sont les fils de ce nœud.

2.

Indiquer quels sont les nœuds de la branche qui se termine par la feuille qui a pour valeur 3.

3.

Dessiner l'arbre obtenu après l'ajout de la valeur 6.

Partie B: Implémentation en Python

Voici un extrait d'une implémentation en Python d'une classe modélisant un arbre binaire de recherche.

class ABR:

"""Implémentation d'un arbre binaire de recherche (ABR) """

def __init__(self, valeur=None):

self.valeur = valeur

self.fg = None

self.fd = None

def estVide(self):

return self.valeur == None

def insererElement(self, e):

if self.estVide():

self.valeur = e

else:

if e < self.valeur:

if self.fg:

self.fg.insererElement(e)

else:

self.fg = ABR(e)

if e > self.valeur:

if self.fd:

self.fd.insererElement(e)

else:

self.fd = ABR(e)

1.

Expliquer le rôle de la fonction __init__.

2.

Dans cette implémentation, expliquer ce qui se passe si on ajoute un élément déjà présent dans l'arbre.

3.

Recopier et compléter les lignes de code surlignées ci-dessous permettant de créer l'arbre de la partie A.

arbre = ABR(

)

arbre.insererElement(2)

arbre.insererElement(

)

arbre.insererElement(7)

arbre.insererElement(

)

Partie C: Tri par arbre binaire de recherche

On souhaite trier un ensemble de valeurs entières distinctes grâce à un arbre binaire de recherche. Pour cela, on ajoute un à un les éléments de l'ensemble dans un arbre initialement vide. Il ne reste plus qu'à parcourir l'arbre afin de lire et de stocker dans un tableau résultat les valeurs dans l'ordre croissant.

1.

Donner le nom du parcours qui permet de visiter les valeurs d'un arbre binaire de recherche dans l'ordre croissant.

2.

Comparer la complexité de cette méthode de tri avec celle du tri par insertion ou du tri par sélection.

Énoncé: Exercice 3 · Bac Numérique et Sciences Informatiques Polynésie 2021 (jour 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Indiquer quelle valeur a le nœud racine

Réponse : 5

1. et quels sont les fils de ce nœud.

Réponse : 2 et 7

2. Indiquer quels sont les nœuds de la branche qui se termine par la feuille qui a pour valeur 3.

Réponse : 5, 2, 3

1. Expliquer le rôle de la fonction __init__.

Réponse : C'est la méthode constructeur (initialisation) de la classe ABR qui initialise les attributs d'une nouvelle instance (`valeur`, `fg` et `fd`).

2. Dans cette implémentation, expliquer ce qui se passe si on ajoute un élément déjà présent dans l'arbre.

Réponse : L'élément n'est pas ajouté : il ne se passe rien (l'arbre reste inchangé).

3. arbre = ABR(........)

Réponse : 5

Les réponses des 5 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 5 · Polynésie 2022 (jour 1)

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