Exercice 5 · Bac Numérique et Sciences Informatiques Polynésie 2022 (jour 1)

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

Énoncé

EXERCICE 5 (4 points)

Cet exercice traite du thème « algorithmique », et principalement des algorithmes sur les arbres binaires.

On manipule ici les arbres binaires avec trois fonctions:

est_vide(A) qui renvoie True si l'arbre binaire A est vide, False s'il ne l'est pas;

sous_arbre_gauche(A) qui renvoie le sous-arbre gauche de l'arbre binaire A;

sous_arbre_droit(A) qui renvoie le sous-arbre droit de l'arbre binaire A.

L'arbre binaire renvoyé par les fonctions sous_arbre_gauche et sous_arbre_droit peut éventuellement être l'arbre vide.

On définit la hauteur d'un arbre binaire non vide de la façon suivante:

si ses sous-arbres gauche et droit sont vides, sa hauteur est 0;

si l'un des deux au moins est non vide, alors sa hauteur est égale à 1+M1 + M, où MM est la plus grande des hauteurs de ses sous-arbres (gauche et droit) non vides.

1. a.

Donner la hauteur de l'arbre ci-dessous.

1. b.

Dessiner sur la copie un arbre binaire de hauteur 4.

La hauteur d'un arbre est calculée par l'algorithme récursif suivant:

1 Algorithme hauteur(A):

2 test d'assertion: A est supposé non vide

3 si sous_arbre_gauche(A) vide et sous_arbre_droit(A) vide:

4 renvoyer 0

5 sinon, si sous_arbre_gauche(A) vide:

6 renvoyer 1 + hauteur(sous_arbre_droit(A))

7 sinon, si...:

8 renvoyer...

9 sinon:

10 renvoyer 1 + max(hauteur(sous_arbre_gauche(A)),

11 hauteur(sous_arbre_droit(A)))

2.

Recopier sur la copie les lignes 7 et 8 en complétant les points de suspension.

3. On considère un arbre binaire RR dont on note GG le sous-arbre gauche et DD le sous-arbre droit. On suppose que RR est de hauteur 4 et GG de hauteur 2.

3. a.

Justifier le fait que DD n'est pas l'arbre vide et déterminer sa hauteur.

3. b.

Illustrer cette situation par un dessin.

Soit un arbre binaire non vide de hauteur hh. On note nn le nombre de nœuds de cet arbre. On admet que h+1⩽n⩽2h+1−1h + 1 \leqslant n \leqslant 2^{h+1} - 1.

4. a.

Vérifier ces inégalités sur l'arbre binaire de la question 1.a.

4. b.

Expliquer comment construire un arbre binaire de hauteur hh quelconque ayant h+1h + 1 nœuds.

4. c.

Expliquer comment construire un arbre binaire de hauteur hh quelconque ayant 2h+1−12^{h+1} - 1 nœuds.

Indication: 2h+1−1=1+2+4+⋯+2h2^{h+1} - 1 = 1 + 2 + 4 + \dots + 2^h.

L'objectif de la fin de l'exercice est d'écrire le code d'une fonction fabrique(h, n) qui prend comme paramètres deux nombres entiers positifs h et n tels que h+1<n<2h+1−1h + 1 < n < 2^{h+1} - 1, et qui renvoie un arbre binaire de hauteur h à n nœuds.

Pour cela, on a besoin des deux fonctions suivantes:

arbre_vide(), qui renvoie un arbre vide;

arbre(gauche, droit) qui renvoie l'arbre de fils gauche gauche et de fils droit droit.

5.

Recopier sur la copie l'arbre binaire ci-dessous et numéroter ses nœuds de 1 en 1 en commençant à 1, en effectuant un parcours en profondeur préfixe.

La fonction fabrique ci-dessous a pour but de répondre au problème posé. Pour cela, la fonction annexe utilise la valeur de n, qu'elle peut modifier, et renvoie un arbre binaire de hauteur hauteur_max dont le nombre de nœuds est égal à la valeur de n au moment de son appel.

1. def fabrique(h, n):

2. def annexe(hauteur_max):

3. if n == 0:

4. return arbre_vide()

5. elif hauteur_max == 0:

6. n = n - 1

7. return...

8. else:

9. n = n - 1

10. gauche = annexe(hauteur_max - 1)

11. droite =...

12. return arbre(gauche, droite)

13. return annexe(h)

6.

Recopier sur la copie les lignes 7 et 11 en complétant les points de suspension.

Énoncé: Exercice 5 · Bac Numérique et Sciences Informatiques Polynésie 2022 (jour 1)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. a. Donner la hauteur de l'arbre ci-dessous.

Réponse : 2

2. Ligne 7 : condition

Réponse : sous_arbre_droit(A) vide

2. Ligne 8 : expression renvoyée

Réponse : 1 + hauteur(sous_arbre_gauche(A))

3. a. Déterminer la hauteur de D

Réponse : 3

3. a. Justifier le fait que D n'est pas l'arbre vide

Réponse : Si D était vide, la hauteur de R serait égale à 1 + hauteur(G) = 1 + 2 = 3 != 4. Donc D n'est pas vide (sa hauteur est 3).

4. a. Vérifier ces inégalités sur l'arbre binaire de la question 1.a.

Réponse : Pour h = 2 et n = 4 : 2 + 1 <= 4 <= 2^3 - 1, soit 3 <= 4 <= 7, ce qui est bien vérifié.

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 1 · Polynésie 2023 (jour 2) · Exercice 3 · Polynésie 2021 (jour 2) ›

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