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