示例#1
0
    def test_isempty(self):
        tree = Bst()
        self.assertTrue(tree.isempty())

        ARBITRARY_SIZE = 5
        tree.size = ARBITRARY_SIZE
        self.assertFalse(tree.isempty())
示例#2
0
            def remove_one_child_root():
                """Removing root in a tree where the root has only one child"""
                tree = Bst()
                tree.add(ROOT_DATA)
                tree.add(LEFT_DATA)
                self.assertFalse(tree.isempty())
                self.assertEquals(tree.getsize(), 2)
                self.assertEquals(tree.root.getleft().getdata(), LEFT_DATA)

                val = tree.remove(ROOT_DATA)

                self.assertFalse(tree.isempty())
                self.assertEquals(tree.getsize(), 1)
                self.assertEquals(val, ROOT_DATA)
                self.assertIsNotNone(tree.root)
                self.assertNotEquals(tree.root.getdata(), ROOT_DATA)
                self.assertEquals(tree.root, Node(LEFT_DATA))
示例#3
0
    def test_contains(self):
        # Test with a root only
        tree = root_only()

        self.assertFalse(tree.isempty())
        self.assertEquals(tree.getsize(), 1)
        self.assertIsNotNone(tree.root)
        self.assertEquals(tree.root.getdata(), ROOT_DATA)

        # Should contain the root data
        self.assertTrue(tree.contains(ROOT_DATA))

        # Should not contain any of the children data
        self.assertFalse(tree.contains(LEFT_DATA))
        self.assertFalse(tree.contains(RIGHT_DATA))

        # Should not contain any of the grandchildren data
        self.assertFalse(tree.contains(LL_DATA))
        self.assertFalse(tree.contains(LR_DATA))
        self.assertFalse(tree.contains(RL_DATA))
        self.assertFalse(tree.contains(RR_DATA))

        tree.remove(ROOT_DATA)
        self.assertTrue(tree.isempty())
        self.assertIsNone(tree.root)
        self.assertFalse(tree.contains(ROOT_DATA))

        # Now test with the balanced tree
        tree = balanced_tree()

        self.assertFalse(tree.isempty())
        self.assertEquals(tree.getsize(), 7)
        self.assertIsNotNone(tree.root)
        self.assertEquals(tree.root.getdata(), ROOT_DATA)

        # Should contain the root data
        self.assertTrue(tree.contains(ROOT_DATA))

        # Should not contain any of the children data
        self.assertTrue(tree.contains(LEFT_DATA))
        self.assertTrue(tree.contains(RIGHT_DATA))

        # Should not contain any of the grandchildren data
        self.assertTrue(tree.contains(LL_DATA))
        self.assertTrue(tree.contains(LR_DATA))
        self.assertTrue(tree.contains(RL_DATA))
        self.assertTrue(tree.contains(RR_DATA))

        TO_ADD_DATA = 50

        self.assertFalse(tree.contains(TO_ADD_DATA))
        tree.add(TO_ADD_DATA)
        self.assertTrue(tree.getsize(), 8)
        self.assertTrue(tree.contains(TO_ADD_DATA))

        # Finally, test with an empty tree
        tree = Bst()

        self.assertTrue(tree.isempty())
        self.assertIsNone(tree.root)

        # Should not contain the root data
        self.assertFalse(tree.contains(ROOT_DATA))

        # Should not contain any of the children data
        self.assertFalse(tree.contains(LEFT_DATA))
        self.assertFalse(tree.contains(RIGHT_DATA))

        # Should not contain any of the grandchildren data
        self.assertFalse(tree.contains(LL_DATA))
        self.assertFalse(tree.contains(LR_DATA))
        self.assertFalse(tree.contains(RL_DATA))
        self.assertFalse(tree.contains(RR_DATA))