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)
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)
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)
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)