|
@ -41,6 +41,23 @@ class Expression: |
|
|
result += str(self.gauche) |
|
|
result += str(self.gauche) |
|
|
return result |
|
|
return result |
|
|
|
|
|
|
|
|
|
|
|
def npi2tree(liste_npi): |
|
|
|
|
|
"""Convertit une liste représentant une expression en notation polonaise inversée en un arbre d'expression.""" |
|
|
|
|
|
pille = [] |
|
|
|
|
|
for element in liste_npi: |
|
|
|
|
|
# Si c'est un opérateur (+, -, * ou /), on crée un nœud opérateur |
|
|
|
|
|
if element in ('+', '-', '*', '/'): |
|
|
|
|
|
droit = pille.pop() |
|
|
|
|
|
gauche = pille.pop() |
|
|
|
|
|
pille.append(Expression(element, gauche, droit)) # Créer un nouvel arbre et empiler |
|
|
|
|
|
else: |
|
|
|
|
|
# Sinon, ça veut dire que c'est un nombre donc on le convertit et on l'empile. |
|
|
|
|
|
pille.append(Expression(int(element), None, None)) |
|
|
|
|
|
|
|
|
|
|
|
return pille[0] # Retourne l'arbre complet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#test: |
|
|
#test: |
|
|
|
|
|
|
|
|