diff --git a/src/main.py b/src/main.py index af57d5a..619b01e 100644 --- a/src/main.py +++ b/src/main.py @@ -1,10 +1,18 @@ #! /usr/bin/env python from strings import * +from tree import * def main(): - string_ex() + t = build_tree((1, (2, (3, None, None), None), (4, None, None))) + + print(t) + + assert t.val == 1 + assert t.left.val == 2 + assert t.left.left.val == 3 + assert t.right.val == 4 pass diff --git a/src/tree.py b/src/tree.py new file mode 100644 index 0000000..b657271 --- /dev/null +++ b/src/tree.py @@ -0,0 +1,31 @@ + +class Tree: + def __init__(self, val, left=None, right=None): + self.val = val + self.left = left + self.right = right + + def __repr__(self): + return f"({self.val} {self.__print_leaf(self.left)} {self.__print_leaf(self.right)})" + + def __print_leaf(self, leaf): + if leaf: + return f"{leaf}" + return "" + +def build_tree(args: Tuple): + if args == None: + return None + + if not isinstance(args, tuple): + raise "Invalid argument" + + if len(args) != 3: + raise "Invalid number of parameters in the tuple" + + value, right, left = args + + if (not isinstance(right, tuple) and right != None) or (not isinstance(left, tuple) and left != None): + raise "Nodes must be tuples" + + return Tree(value, build_tree(right), build_tree(left))