25-NSIJ1AN1-1 Énoncé Sujet En suivant l'arbre de décision, le végétal correspondant à cette description est un sorbier. En suivant l'arbre de décision, la feuille correspondante à cette description est vide, on ne peut donc pas identifier ce végétal. arbre_2 = Noeud( 'Simples ?', Feuille_resultat([]), Noeud( 'Alternées ?', Noeud( 'Bord denté ?', Feuille_resultat(['Sorbier']), Feuille_resultat(['Robinier', 'Noyer']) ), Feuille_resultat([]), ) ) class Noeud: # ... def est_resultat(self): return False class Feuille_resultat: # ... def est_resultat(self): return True class Feuille_resultat: # ... def nb_vegetaux(self): return len(self.vegetaux) class Noeud: # ... def nb_vegetaux(self): return self.sioui.nb_vegetaux() + self.sinon.nb_vegetaux() class Feuille_resultat: # ... def liste_questions(self): return [] class Noeud: # ... def liste_questions(self): return [self.question] + self.sioui.liste_questions() + self.sinon.liste_questions() def est_bien_renseigne(dico_vegetal, arbre): questions = arbre.liste_questions() for question in dico_vegetal: if question not in questions: return False return True def identifier_vegetaux(arbre, dico_vegetal) while not arbre.est_resultat(): if dico_vegetal[arbre.question]: arbre = arbre.sioui else: arbre = arbre.sinon return arbre.vegetaux