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)
test_tr.inorder() a_node = LinkedBinaryTree('A') a_node.insert_left('B') a_node.insert_right('C') b_node = a_node.left_child b_node.insert_right('D') c_node = a_node.right_child c_node.insert_left('E') c_node.insert_right('F') d_node = b_node.right_child e_node = c_node.left_child f_node = c_node.right_child print(a_node.key) print(b_node.key) print(c_node.key) print(d_node.key) print(e_node.key) print(f_node.key) print("inorder") a_node.inorder() print("preorder") a_node.preorder() print("postorder") a_node.postorder()
T = LinkedBinaryTree() T.add_root(1) p1 = T.add_left(T.root(), 2) p2 = T.add_right(T.root(), 3) T.add_left(p1, 4) T.add_right(p1, 5) p3 = T.add_left(p2, 6) p4 = T.add_right(p2, 7) T.add_left(p3, 8) T.add_right(p3, 9) T.add_right(p4, 10) # Check Traversals: print("\nPreorder: ") for p in T.preorder(): print(p.element()) print("\nPostorder: ") for p in T.postorder(): print(p.element()) print("\nInorder: ") for p in T.inorder(): print(p.element())