Exercice 5 · Bac Numérique et Sciences Informatiques Amérique du Sud 2022 (jour 2)

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

Énoncé

Cet exercice porte sur les arbres binaires, la programmation orienté objet et la récursivité

Dans un arbre binaire, chaque nœud admet au plus deux enfants, appelés sous-arbre gauche et sous-arbre droit. On considère dans cet exercice des arbres binaires étiquetés avec des nombres entiers.

On définit un chemin racine-feuille dans un tel arbre comme une liste ordonnée de nœuds telle que:

le premier nœud est la racine;

chaque nœud suivant est enfant du précédent;

le dernier nœud est une feuille.

On appellera somme d'un chemin racine-feuille la somme des étiquettes des nœuds du chemin.

Enfin, la plus grande somme racine-feuille d'un arbre est la plus grande somme qu'il est possible d'obtenir en considérant tous les chemins racine-feuille de l'arbre.

1.

Déterminer la plus grande somme racine-feuille de l'arbre représenté ci-dessous.

2. La classe Noeud ci-dessous implémente le type abstrait d'arbre binaire.

class Noeud:

def __init__(self, v):

self.etiquette = v

self.sag = None

self.sad = None

def niveau(self):

if self.sag!=None and self.sad!=None:

hg = self.sag.niveau()

hd = self.sad.niveau()

return 1+max(hg, hd)

if self.sag!=None:

return self.sag.niveau()+1

if self.sad!=None:

return self.sad.niveau()+1

return 0

def modifier_sag(self, nsag):

self.sag = nsag

def modifier_sad(self, nsad):

self.sad = nsad

a.

Écrire une suite d'instructions utilisant la classe Noeud permettant de représenter l'arbre ci-dessous.

b.

Que renvoie l'appel de la méthode niveau sur l'arbre ci-dessus ?

3.

S’inspirer du code de la méthode niveau pour écrire une méthode récursive pgde_somme qui renvoie la plus grande somme racine-feuille d'un arbre.

def pgde_somme(self):

4. On appelle arbre magique un arbre binaire dont toutes les sommes des chemins racine-feuille sont égales.

a.

Recopier et compléter l'arbre ci-dessous pour qu'il soit magique.

b.

Un arbre est magique si ses sous-arbres sont magiques et qu'ils ont de plus la même plus grande somme racine-feuille. Écrire une méthode récursive est_magique qui renvoie True si l'arbre est magique et False sinon.

def est_magique(self):

Énoncé: Exercice 5 · Bac Numérique et Sciences Informatiques Amérique du Sud 2022 (jour 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Déterminer la plus grande somme racine-feuille de l'arbre représenté ci-dessous.

Réponse : 16

2.a. Écrire une suite d'instructions utilisant la classe Noeud permettant de représenter l'arbre ci-dessous.

Réponse : ```python r = Noeud(2) r.modifier_sag(Noeud(7)) r.modifier_sad(Noeud(5)) r.sag.modifier_sag(Noeud(4)) r.sag.modifier_sad(Noeud(1)) r.sad.modifier_sad(Noeud(8)) ```

2.b. Que renvoie l'appel de la méthode niveau sur l'arbre ci-dessus ?

Réponse : 2

3. S’inspirer du code de la méthode niveau pour écrire une méthode récursive pgde_somme qui renvoie la plus grande somme racine-feuille d'un arbre.

Réponse : ```python if self.sag is not None and self.sad is not None: return self.etiquette + max(self.sag.pgde_somme(), self.sad.pgde_somme()) if self.sag is not None: return self.etiquette + self.sag.pgde_somme() if self.sad is not None: return self.etiquette + self.sad.pgde_somme() return self.etiquette ```

4.a. Étiquette du sous-arbre gauche de la racine 5

Réponse : 3

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 3 · Amérique du Sud 2022 (jour 1)

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