def test_round_trip(self): for expression, _ in cases: self.assertEqual( construct_expression(build_parse_tree(expression)), expression )
def test_parse_and_evaluate(self): for expression, expected_value in cases: self.assertEqual( evaluate(build_parse_tree(expression)), expected_value )
def test_parse_and_evaluate(self): for expression, expected_value in cases: self.assertEqual(evaluate(build_parse_tree(expression)), expected_value)
def test_round_trip(self): for expression, _ in cases: self.assertEqual( construct_expression(build_parse_tree(expression)), expression)
def print_expression(tree): string_value = "" if tree: string_value = "(" + print_expression(tree.get_left_child()) string_value = string_value + str(tree.get_root_value()) string_value = string_value + print_expression(tree.get_right_child()) + ")" return string_value if __name__ == '__main__': expression = "( ( 10 + 5 ) * 3 )" print "Building parse tree for {}".format(expression) tree = build_parse_tree(expression) print "\nPreorder traversal:" preorder_traversal(tree) print "\nInorder traversal:" inorder_traversal(tree) print "\nPostorder traversal:" postorder_traversal(tree) print "\nPostorder evaluation:" print "Value: {}".format(postorder_evaluation(tree)) print "\nReconstructing expression from tree:" print print_expression(tree)