From afd306ad06923e1ad875a6234d6d0787d1d50473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Sun, 18 Oct 2020 08:10:50 +0200 Subject: [PATCH] feat: misc --- misc/trees.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 misc/trees.py diff --git a/misc/trees.py b/misc/trees.py new file mode 100644 index 0000000..1783bc3 --- /dev/null +++ b/misc/trees.py @@ -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))