예제 #1
0
def performanceAVL():
    """Demonstrate AVL properties always hold by building and deconstructing AVL trees from scratch."""
    n = 4

    while n <= 1024:

        bt = BinaryTree()
        added = []
        for i in range(n):
            new = i
            if not new in bt:
                bt.add(new)
                added.append(new)

                if not bt.root.assertAVLProperty():
                    print(bt)
                    assert False

        random.shuffle(added)

        for i in added:
            bt.remove(i)
            if (bt.root):
                if not bt.root.assertAVLProperty():
                    print(bt)
                    assert False
            assert i not in bt

        print("pass " + str(n))

        n *= 2
예제 #2
0
class TestAVLMethods(unittest.TestCase):

    def setUp(self):
        self.bst = BinaryTree()
        
    def tearDown(self):
        self.bst = None
        
    def test_basic(self):
        self.bst.add(10)
        self.assertTrue(10 in self.bst)
        
    def test_adding_and_removing(self):
        vals = []
        for _ in range(1000):
            n = random.randint(1,100000)
            vals.append(n)
            if not n in self.bst:
                self.bst.add(n)
                self.assertTrue(self.bst.assertAVLProperty())
           
        for r in vals:
            self.bst.remove(r)
            self.assertFalse(r in self.bst)
            self.assertTrue(self.bst.assertAVLProperty())