36 lines
852 B
Python
36 lines
852 B
Python
def infix(tree):
|
|
if type(tree) == int:
|
|
return str(tree)
|
|
elif len(tree) == 3:
|
|
t1, op, t2 = tree
|
|
return "({} {} {})".format(infix(t1), op, infix(t2))
|
|
else:
|
|
raise ValueError("Malformed expression tree.")
|
|
|
|
|
|
def prefix(tree):
|
|
if type(tree) == int:
|
|
return str(tree)
|
|
elif len(tree) == 3:
|
|
t1, op, t2 = tree
|
|
return "({} {} {})".format(op, prefix(t1), prefix(t2))
|
|
else:
|
|
raise ValueError("Malformed expression tree.")
|
|
|
|
|
|
def postfix(tree):
|
|
if type(tree) == int:
|
|
return str(tree)
|
|
elif len(tree) == 3:
|
|
t1, op, t2 = tree
|
|
return "({} {} {})".format(postfix(t1), postfix(t2), op)
|
|
else:
|
|
raise ValueError("Malformed expression tree.")
|
|
|
|
|
|
example = ((2, "+", 3), "+", 4)
|
|
|
|
print(infix(example))
|
|
print(prefix(example))
|
|
print(postfix(example))
|