class TestTraversalMethods(unittest.TestCase): # Separate class with a setUp tree designed for easy testing of intended # traversal order. def setUp(self): self.tree = LinkedBinaryTree() self.root = self.tree._add_root(1) self.element2 = self.tree._add_left(self.root, 2) self.element3 = self.tree._add_right(self.root, 3) self.element4 = self.tree._add_left(self.element2, 4) self.element5 = self.tree._add_right(self.element2, 5) self.element6 = self.tree._add_left(self.element3, 6) self.element7 = self.tree._add_right(self.element3, 7) def test_preorder(self): visits_expected = [1, 2, 4, 5, 3, 6, 7] visits_actual = [] * 7 # List to store the visits in the order they happened for position in self.tree.preorder(): visits_actual.append(position.element()) self.assertEqual(visits_actual, visits_expected) def test_postorder(self): visits_expected = [4, 5, 2, 6, 7, 3, 1] visits_actual = [] * 7 # List to store the visits in order for position in self.tree.postorder(): visits_actual.append(position.element()) self.assertEqual(visits_actual, visits_expected) def test_breadthfirst(self): visits_expected = [1, 2, 3, 4, 5, 6, 7] visits_actual = [] * 7 for position in self.tree.breadthfirst(): visits_actual.append(position.element()) self.assertEqual(visits_actual, visits_expected)