Esempio n. 1
0
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)
Esempio n. 2
0
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()
Esempio n. 3
0
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())