|
@ -3,13 +3,15 @@ |
|
|
# COVIN Clara |
|
|
# COVIN Clara |
|
|
|
|
|
|
|
|
class Expression : |
|
|
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): |
|
|
def __init__ (valeur_racine, fils_gauche, fils_droit): |
|
|
|
|
|
"""Constructeur""" |
|
|
self.valeur = valeur_racine |
|
|
self.valeur = valeur_racine |
|
|
self.gauche = fils_gauche |
|
|
self.gauche = fils_gauche |
|
|
self.droit = fils_droit |
|
|
self.droit = fils_droit |
|
|
|
|
|
|
|
|
def évalue (self): |
|
|
def évalue (self): |
|
|
|
|
|
"""Renvoie le résultat de l'expression""" |
|
|
if self.valeur == '*': |
|
|
if self.valeur == '*': |
|
|
return multiplication(valeur.gauche, valeur.droit) |
|
|
return multiplication(valeur.gauche, valeur.droit) |
|
|
|
|
|
|
|
@ -17,21 +19,28 @@ class Expression : |
|
|
return addition(valeur.gauche, valeur.droit) |
|
|
return addition(valeur.gauche, valeur.droit) |
|
|
|
|
|
|
|
|
def __str__ (self): |
|
|
def __str__ (self): |
|
|
"""Affiche tous les nœuds de l'arbre a par un parcours DFS préfixé.""" |
|
|
"""Affiche tous les nœuds de l'arbre a par un parcours DFS préfixé.""" |
|
|
if a is None: |
|
|
if a is None: |
|
|
return |
|
|
return |
|
|
parcours_dfs_infixe(a.gauche) |
|
|
parcours_dfs_infixe(a.gauche) |
|
|
print(a.valeur) |
|
|
print(a.valeur) |
|
|
parcours_dfs_infixe(a.droit) |
|
|
parcours_dfs_infixe(a.droit) |
|
|
|
|
|
|
|
|
def multiplication (valeur.gauche, valeur.droit): |
|
|
def multiplication (valeur.gauche, valeur.droit): |
|
|
"""multiplie la valeur des fils gauche et droits""" |
|
|
"""Multiplie la valeur des fils gauche et droits""" |
|
|
if valeur.gauche == int and valeur.droit == int : |
|
|
if valeur.gauche == int and valeur.droit == int : |
|
|
return valeur.gauche * valeur.droit |
|
|
return valeur.gauche * valeur.droit |
|
|
|
|
|
|
|
|
def addition (valeur.gauche, valeur.droit): |
|
|
def addition (valeur.gauche, valeur.droit): |
|
|
"""additionne les valeurs des fils gauche et droits""" |
|
|
"""Additionne les valeurs des fils gauche et droits""" |
|
|
if valeur.gauche == int and valeur.droit == int : |
|
|
if valeur.gauche == int and valeur.droit == int : |
|
|
return valeur.gauche + valeur.droit |
|
|
return valeur.gauche + valeur.droit |
|
|
|
|
|
|
|
|
|
|
|
#test |
|
|
|
|
|
exp = Expression('*', |
|
|
|
|
|
Expression(6, None, None), |
|
|
|
|
|
Expression('+', |
|
|
|
|
|
Expression(4, None, None), |
|
|
|
|
|
Expression(3, None, None) |
|
|
|
|
|
) |
|
|
|
|
|
) |