Пример #1
0
    def test_put_withCompareFunctionAnddNoneTypeArgumentValue_shouldRemoveAssociatedKeyFromBSTDecreaseLengthAndMaintainBalanceFactor(
            self):
        bst = AVLTree(self.cmp)
        bst.put([0, 0], 1)
        bst.put([0, 1], 2)
        bst.put([0, 2], 3)
        bst.put([0, 3], 4)

        self.assertIn([0, 1], bst)
        self.assertEqual(4, len(bst))
        self.assertEqual(2, bst.height())

        bst.put([0, 1], None)
        self.assertNotIn([0, 1], bst)
        self.assertEqual(3, len(bst))
        self.assertEqual(1, bst.height())
Пример #2
0
    def test_put_withNoneTypeArgumentValue_shouldRemoveAssociatedKeyFromBSTDecreaseLengthAndMaintainBalanceFactor(
            self):
        bst = AVLTree()
        bst.put("A", 1)
        bst.put("B", 2)
        bst.put("C", 3)
        bst.put("D", 4)

        self.assertIn("A", bst)
        self.assertEqual(4, len(bst))
        self.assertEqual(2, bst.height())

        bst.put("A", None)
        self.assertNotIn("A", bst)
        self.assertEqual(3, len(bst))
        self.assertEqual(1, bst.height())
Пример #3
0
    def test_delete_withKeyInBST_shouldDeleteKeyFromBSTDecreaseLengthAndMaintainBalanceFactor(
            self):
        bst = AVLTree()
        bst.put("A", 1)
        bst.put("B", 2)
        bst.put("C", 3)
        bst.put("D", 4)
        self.assertEqual(2, bst.height())

        bst.delete("A")
        self.assertEqual(3, len(bst))
        self.assertEqual(1, bst.height())

        bst.delete("C")
        self.assertEqual(2, len(bst))
        self.assertEqual(1, bst.height())
Пример #4
0
    def test_delete_withCompareFunctionAndKeyInBST_shouldDeleteKeyFromBSTDecreaseLengthAndMaintainBalanceFactor(
            self):
        bst = AVLTree(self.cmp)
        bst.put([0, 0], 1)
        bst.put([0, 1], 2)
        bst.put([0, 2], 3)
        bst.put([0, 3], 4)
        self.assertEqual(2, bst.height())

        bst.delete([0, 1])
        self.assertEqual(3, len(bst))
        self.assertEqual(1, bst.height())

        bst.delete([0, 2])
        self.assertEqual(2, len(bst))
        self.assertEqual(1, bst.height())
Пример #5
0
    def test_put_withCompareFunctionAndKeyNotInBST_shouldAddNewKeyIncreaseBSTLengthAndMaintainBalanceFactor(
            self):
        bst = AVLTree(self.cmp)
        self.assertEqual(0, len(bst))

        bst.put([0, 0], 0)
        self.assertEqual(1, len(bst))
        self.assertEqual(0, bst.height())

        bst.put([0, 1], 0)
        self.assertEqual(2, len(bst))
        self.assertEqual(1, bst.height())

        bst.put([0, -1], 0)
        self.assertEqual(3, len(bst))
        self.assertEqual(1, bst.height())

        bst.put([-1, 1], 0)
        self.assertEqual(4, len(bst))
        self.assertEqual(2, bst.height())
Пример #6
0
    def test_put_withKeyNotInBST_shouldAddNewKeyIncreaseBSTLengthAndMaintainBalanceFactor(
            self):
        bst = AVLTree()
        self.assertEqual(0, len(bst))

        bst.put(10, 0)
        self.assertEqual(1, len(bst))
        self.assertEqual(0, bst.height())

        bst.put(20, 0)
        self.assertEqual(2, len(bst))
        self.assertEqual(1, bst.height())

        bst.put(30, 0)
        self.assertEqual(3, len(bst))
        self.assertEqual(1, bst.height())

        bst.put(40, 0)
        self.assertEqual(4, len(bst))
        self.assertEqual(2, bst.height())

        bst.put(50, 0)
        self.assertEqual(5, len(bst))
        self.assertEqual(2, bst.height())

        bst.put(25, 0)
        self.assertEqual(6, len(bst))
        self.assertEqual(2, bst.height())
Пример #7
0
    def test_height_withNotEmptyBST_shouldReturnHeightOfBST(self):
        bst = AVLTree()

        bst.put(10, 0)
        self.assertEqual(0, bst.height())

        bst.put(20, 0)
        self.assertEqual(1, bst.height())

        bst.put(30, 0)
        self.assertEqual(1, bst.height())

        bst.put(40, 0)
        self.assertEqual(2, bst.height())

        bst.put(50, 0)
        self.assertEqual(2, bst.height())

        bst.put(25, 0)
        self.assertEqual(2, bst.height())
Пример #8
0
 def test_height_withOneNodeBST_shouldReturnZero(self):
     bst = AVLTree()
     bst.put("A", 0)
     self.assertEqual(0, bst.height())