-
Notifications
You must be signed in to change notification settings - Fork 0
/
arbol_expresiones.py
executable file
·36 lines (27 loc) · 1.06 KB
/
arbol_expresiones.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from pila import *
from arbol import *
class Arbol:
""" CREAR EL ARBOL """
def __init__(self):
pila = Pila()
""" CREAR EL ARBOL """
def convertir(self,lista, pila):
if lista != []:
if lista[0] in "+-*/":
nodo_der = pila.desapilar()
nodo_izq = pila.desapilar()
pila.apilar(Nodo(lista[0],nodo_izq,nodo_der))
else:
pila.apilar(Nodo(lista[0]))
return self.convertir(lista[1:],pila)
""" EVALUAR EL ARBOL CREADO """
def evaluar(self,arbol):
if arbol.valor == "+":
return self.evaluar(arbol.izq) + self.evaluar(arbol.der)
if arbol.valor == "-":
return self.evaluar(arbol.izq) - self.evaluar(arbol.der)
if arbol.valor == "/":
return self.evaluar(arbol.izq) / self.evaluar(arbol.der)
if arbol.valor == "*":
return self.evaluar(arbol.izq) * self.evaluar(arbol.der)
return int(arbol.valor)