Exercice 1 · Bac Numérique et Sciences Informatiques Métropole 2021 (sujet 1)

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

Énoncé

EXERCICE 1 (4 points)

Cet exercice porte sur les arbres binaires de recherche.

Dans cet exercice, les arbres binaires de recherche ne peuvent pas comporter plusieurs fois la même clé. De plus, un arbre binaire de recherche limité à un nœud a une hauteur de 1.

On considère l'arbre binaire de recherche représenté ci-dessous (figure 1), où val représente un entier:

1.

a.

Donner le nombre de feuilles de cet arbre et préciser leur valeur (étiquette).

b.

Donner le sous arbre-gauche du nœud 23.

c.

Donner la hauteur et la taille de l'arbre.

d.

Donner les valeurs entières possibles de val pour cet arbre binaire de recherche.

On suppose, pour la suite de cet exercice, que val est égal à 16.

2.

On rappelle qu'un parcours infixe depuis un nœud consiste, dans l'ordre, à faire un parcours infixe sur le sous arbre-gauche, afficher le nœud puis faire un parcours infixe sur le sous-arbre droit. Dans le cas d'un parcours suffixe, on fait un parcours suffixe sur le sous-arbre gauche puis un parcours suffixe sur le sous-arbre droit, avant d'afficher le nœud.

a.

Donner les valeurs d'affichage des nœuds dans le cas du parcours infixe de l'arbre.

b.

Donner les valeurs d'affichage des nœuds dans le cas du parcours suffixe de l'arbre.

3.

On considère la classe Noeud définie de la façon suivante en Python:

class Noeud():

def __init__(self, v):

self.ag = None

self.ad = None

self.v = v

def insere(self, v):

n = self

est_insere = False

while not est_insere:

if v == n.v:

est_insere = True # Bloc 1

elif v < n.v:

if n.ag != None: #

n = n.ag # Bloc 2

else: #

n.ag = Noeud(v) #

est_insere = True #

else:

if n.ad != None: #

n = n.ad # Bloc 3

else: #

n.ad = Noeud(v) #

est_insere = True #

def insere_tout(self, vals):

for v in vals:

self.insere(v) a.

Représenter l'arbre construit suite à l'exécution de l'instruction suivante:

racine = Noeud(18)

racine.insere_tout([12, 13, 15, 16, 19, 21, 32, 23])

b.

Écrire les deux instructions permettant de construire l'arbre de la figure 1. On rappelle que le nombre val est égal à 16.

c.

On considère l'arbre tel qu'il est présenté sur la figure 1. Déterminer l'ordre d'exécution des blocs (repérés de 1 à 3) suite à l'application de la méthode insere(19) au nœud racine de cet arbre.

4.

Écrire une méthode recherche(self, v) qui prend en argument un entier v et renvoie la valeur True si cet entier est une étiquette de l'arbre, False sinon.

def recherche(self, v):

Énoncé: Exercice 1 · Bac Numérique et Sciences Informatiques Métropole 2021 (sujet 1)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. a. Donner le nombre de feuilles de cet arbre

Réponse : 4

1. a. ... et préciser leur valeur (étiquette).

Réponse : 12, val, 21, 32 / 12, 16, 21, 32

1. b. Donner le sous arbre-gauche du nœud 23.

Réponse : Nœud de valeur 19 ayant pour fils droit le nœud 21 / 19 avec son sous-arbre droit 21

1. c. Donner la hauteur de l'arbre.

Réponse : 4

1. c. Donner la taille de l'arbre.

Réponse : 9

1. d. Donner les valeurs entières possibles de val pour cet arbre binaire de recherche.

Réponse : 16 et 17 / 16, 17

Les réponses des 6 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 · Métropole Candidat libre 2021 (sujet 2) · Exercice 5 · Métropole 1 remplacement 2021 ›

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