Exercice 1 - Arbres · Bac Numérique et Sciences Informatiques Métropole 2021 (sujet 2)
Thème : Arbres : vocabulaire, mesures et algorithmique · Tiré du sujet Métropole France 2 (2021)
Énoncé
EXERCICE 1 (4 points)
Cet exercice porte sur les arbres et la programmation orientée objet.
Une agence immobilière développe un programme pour gérer les biens immobiliers qu'elle propose à la vente.
Dans ce programme, pour modéliser les données de biens immobiliers, on définit une classe Bim avec les attributs suivants:
nt de type str représente la nature du bien (appartement, maison, bureau, commerces,...);
sf de type float est la surface du bien;
pm de type float est le prix moyen par m² du bien qui dépend de son emplacement.
La classe Bim possède une méthode estim_prix qui renvoie une estimation du prix du bien. Le code (incomplet) de la classe Bim est donné ci-dessous:
class Bim:
def __init__(self, nature, surface, prix_moy):
...
def estim_prix(self):
return self.sf * self.pm
5. Pour une recherche efficace des biens immobiliers selon le critère de leur surface, on stocke les objets de type Bim dans un arbre binaire de recherche, nommé abr. Pour tout nœud de cet arbre:
tous les objets de son sous-arbre gauche ont une surface inférieure ou égale à la surface de l'objet contenue dans ce nœud;
tous les objets de son sous-arbre droit ont une surface strictement supérieure à la surface de l'objet contenue dans ce nœud.
L'objet abr dispose des méthodes suivantes:
abr.est_vide(): renvoie True si abr est vide et False sinon.
abr.get_v(): renvoie l'élément (de type Bim) situé à la racine de abr si abr n'est pas vide et None sinon.
abr.get_g(): renvoie le sous-arbre gauche de abr si abr n'est pas vide et None sinon.
abr.get_d(): renvoie le sous-arbre droit de abr si abr n'est pas vide et None sinon.
a.
Dans cette question, on suppose que l'arbre binaire abr a la forme ci-dessous:
b.
Recopier et compléter le code de la fonction récursive contient donnée ci-dessous, qui prend en arguments un nombre surface de type float et un arbre binaire de recherche abr contenant des éléments de type Bim ordonnés selon leur attribut de surface sf. La fonction contient(surface, abr) renvoie True s'il existe un bien dans abr d'une surface supérieure ou égale à surface et False sinon.
def contient(surface, abr):
if abr.est_vide():
return False
elif abr.get_v().sf >=.........:
return True
else:
return contient( surface,.........)

Corrigé
Corrigé proposé par AprenAI (non officiel)
a. Donner la liste les biens b1, b2, b3, b4, b5, b6 triée dans l'ordre croissant de leur surface.
Réponse : [b2, b4, b1, b5, b3, b6] / b2, b4, b1, b5, b3, b6
La réponse de la question restante 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 · Métropole 1 remplacement 2021