feat: misc
This commit is contained in:
35
misc/trees.py
Normal file
35
misc/trees.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
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))
|
||||||
Reference in New Issue
Block a user