You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
# BELLYNCK Manon
|
|
# GUILLAUMIN-TORRES Ambre
|
|
# COVIN Clara
|
|
|
|
class Expression :
|
|
"""Permet de représenter et manipuler une expression arithmétique sous la forme d'un arbre"""
|
|
def __init__ (valeur_racine, fils_gauche, fils_droit):
|
|
"""Constructeur"""
|
|
self.valeur = valeur_racine
|
|
self.gauche = fils_gauche
|
|
self.droit = fils_droit
|
|
|
|
def évalue (self):
|
|
"""Renvoie le résultat de l'expression"""
|
|
if self.valeur == '*':
|
|
return multiplication(valeur.gauche, valeur.droit)
|
|
|
|
elif self.valeur == '+':
|
|
return addition(valeur.gauche, valeur.droit)
|
|
|
|
def __str__ (self):
|
|
"""Affiche tous les nœuds de l'arbre a par un parcours DFS préfixé."""
|
|
if a is None:
|
|
return
|
|
parcours_dfs_infixe(a.gauche)
|
|
print(a.valeur)
|
|
parcours_dfs_infixe(a.droit)
|
|
|
|
def multiplication(self):
|
|
"""Multiplie la valeur des fils gauche et droits"""
|
|
if self.gauche == int and self.droit == int :
|
|
return self.gauche * self.droit
|
|
|
|
def addition(self):
|
|
"""Additionne les valeurs des fils gauche et droits"""
|
|
if self.gauche == int and self.droit == int :
|
|
return self.gauche + self.droit
|
|
|
|
#test
|
|
exp = Expression('*',
|
|
Expression(6, None, None),
|
|
Expression('+',
|
|
Expression(4, None, None),
|
|
Expression(3, None, None)
|
|
)
|
|
)
|