Esempio n. 1
0
 def test_09_bf(self):
     l = [50, 30, 60, 150, 170, 130, 190, 210, 15, 10]
     tree = Node.from_list([100])
     for i in l:
         tree.insert(i)
     tree.traverse(self.check)
     for i in [60, 170, 210, 15]:
         tree.delete(i)
     tree.traverse(self.check)
Esempio n. 2
0
 def test_07_height(self):
     tree = Node.from_list([100])
     self.assertEqual(tree.height(), 1)
     tree.insert(50)
     self.assertEqual(tree.height(), 2)
     tree.insert(30)
     self.assertEqual(tree.height(), 3)
     tree.insert(60)
     self.assertEqual(tree.height(), 3)
     tree.insert(70)
     self.assertEqual(tree.height(), 4)
Esempio n. 3
0
    def test_06_rotate(self):
        tree = Node.from_list([100, 50, 40, 60, 150, 170, 190, 200])

        tree.search(40).rotate_cw()
        self.assertEqual(tree.to_list(),
            (100, (40, None, (50, None, (60, None, None))),
             (150, None, (170, None, (190, None, (200, None, None)))))
        )
        tree.traverse(self.check)

        tree.search(170).rotate_ccw()
        self.assertEqual(tree.to_list(),
            (100, (40, None, (50, None, (60, None, None))),
             (170, (150, None, None), (190, None, (200, None, None))))
        )
        tree.traverse(self.check)

        t1 = Node.from_list_raw((32, (23, None, None), (48, None, (59, None, None))))
        t1.right.rotate_ccw()
        t1.traverse(self.check)
Esempio n. 4
0
 def test_10_invalid_rotation(self):
     tree = Node.from_list([100, 30, 20, 50])
     self.assertRaises(RuntimeError, tree.search(20).rotate_ccw)
     self.assertRaises(RuntimeError, tree.search(50).rotate_cw)