diff --git a/oui.py b/oui.py index 2f1bc85..a7a5bdd 100644 --- a/oui.py +++ b/oui.py @@ -41,6 +41,23 @@ class Expression: result += str(self.gauche) 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: