class BinarySearchTreeTest(TestCase):

    def setUp(self):
        self.bst = BinarySearchTree()
        self.bst.put('H', 5)
        self.bst.put('B', 4)
        self.bst.put('K', 9)
        self.bst.put('C', 2)
        self.bst.put('I', -1)
        self.bst.put('M', 11)

    def test_get(self):
        self.assertEqual(self.bst.get('C'), 2)
        self.assertEqual(self.bst.get('M'), 11)
        self.assertEqual(self.bst.get('Z'), None)

    def test_size(self):
        self.assertEqual(self.bst.size(), 6)

    def test_min(self):
        self.assertEqual(self.bst.min(), 'B')

    def test_max(self):
        self.assertEqual(self.bst.max(), 'M')

    def test_floor(self):
        self.assertEqual(self.bst.floor('D'), 'C')
        self.assertEqual(self.bst.floor('M'), 'M')
        self.assertEqual(self.bst.floor('A'), None)

    def test_select(self):
        self.assertEqual(self.bst.select(0), 'B')
        self.assertEqual(self.bst.select(1), 'C')
        self.assertEqual(self.bst.select(5), 'M')
        self.assertEqual(self.bst.select(6), None)

    def test_rank(self):
        self.assertEqual(self.bst.rank('B'), 0)
        self.assertEqual(self.bst.rank('C'), 1)
        self.assertEqual(self.bst.rank('D'), 2)
        self.assertEqual(self.bst.rank('H'), 2)
        self.assertEqual(self.bst.rank('M'), 5)
        self.assertEqual(self.bst.rank('Z'), 6)

    def test_delete_min(self):
        self.bst.delete_min()
        self.assertEqual(self.bst.size(), 5)
        self.assertEqual(self.bst.min(), 'C')

    def test_delete(self):
        self.bst.delete('H')
        self.assertEqual(self.bst.size(), 5)
        self.assertEqual(self.bst.get('H'), None)

    def test_keys(self):
        keys = self.bst.keys('C', 'J')
        self.assertEqual(keys, ['C', 'H', 'I'])
 def test_put(self):
     tree = BinarySearchTree()
     keys = random.sample(range(1000000), 10000)
     for key in keys:
         tree.put(key, "value{}".format(key))
     for key in keys:
         self.assertTrue(tree.get(key) == "value{}".format(key))
    def test_delete(self):
        tree = BinarySearchTree()
        self.assertIsNone(tree.delete(1), "empty tree")

        keys = random.sample(range(1000), 100)
        for key in keys:
            tree.put("key{}".format(key), "value{}".format(key))
        for key in keys:
            v = tree.delete("key{}".format(key))
            self.assertEqual("value{}".format(key), v)

        tree = BinarySearchTree()
        for i in range(512):
            tree.put(i, i * 100)
        for i in range(512):
            self.assertEqual(i * 100, tree.delete(i))

        tree = BinarySearchTree()
        for i in range(128):
            tree.put(i, i * 100)
        for i in reversed(range(128)):
            self.assertEqual(i * 100, tree.delete(i))
            for j in range(i):
                self.assertEqual(j * 100, tree.get(j))

        self.assertIsNone(tree.delete(0))
Beispiel #4
0
 def test_put(self):
     tree = BinarySearchTree()
     keys = random.sample(range(1000000), 10000)
     for key in keys:
         tree.put(key, "value{}".format(key))
     for key in keys:
         self.assertTrue(tree.get(key) == "value{}".format(key))
Beispiel #5
0
    def test_delete(self):
        tree = BinarySearchTree()
        self.assertIsNone(tree.delete(1), "empty tree")

        keys = random.sample(range(1000), 100)
        for key in keys:
            tree.put("key{}".format(key), "value{}".format(key))
        for key in keys:
            v = tree.delete("key{}".format(key))
            self.assertEqual("value{}".format(key), v)

        tree = BinarySearchTree()
        for i in range(512):
            tree.put(i, i * 100)
        for i in range(512):
            self.assertEqual(i * 100, tree.delete(i))

        tree = BinarySearchTree()
        for i in range(128):
            tree.put(i, i * 100)
        for i in reversed(range(128)):
            self.assertEqual(i * 100, tree.delete(i))
            for j in range(i):
                self.assertEqual(j * 100, tree.get(j))

        self.assertIsNone(tree.delete(0))
    def test_get(self):
        tree = BinarySearchTree()
        self.assertIsNone(tree.get(1), "empty tree")
        keys = random.sample(range(1000), 100)
        for key in keys:
            tree.put("key{}".format(key), "value{}".format(key))
        for _ in range(100):
            index = random.randint(0, len(keys) - 1)
            self.assertEqual("value{}".format(keys[index]), tree.get("key{}".format(keys[index])))

        for i in range(1001, 1100):
            self.assertIsNone(tree.get("key{}".format(i)))

        # tree is list
        tree = BinarySearchTree()
        for i in range(1000):
            tree.put(i, i * 100)
        for i in range(1000):
            self.assertEqual(i * 100, tree.get(i))
Beispiel #7
0
    def test_get(self):
        tree = BinarySearchTree()
        self.assertIsNone(tree.get(1), "empty tree")
        keys = random.sample(range(1000), 100)
        for key in keys:
            tree.put("key{}".format(key), "value{}".format(key))
        for _ in range(100):
            index = random.randint(0, len(keys) - 1)
            self.assertEqual("value{}".format(keys[index]),
                             tree.get("key{}".format(keys[index])))

        for i in range(1001, 1100):
            self.assertIsNone(tree.get("key{}".format(i)))

        # tree is list
        tree = BinarySearchTree()
        for i in range(1000):
            tree.put(i, i * 100)
        for i in range(1000):
            self.assertEqual(i * 100, tree.get(i))
#!/usr/bin/python

from BinarySearchTree import BinarySearchTree

bst = BinarySearchTree()

bst.put(10,'a')
bst.put(9,'b')
bst.put(2,'c')
bst.put(12,'d')
bst.put(14,'e')
bst.put(11,'e')
bst.put(16,'e')

bst[20] = 'f'
print bst.length()


print  bst.get(12)
print  bst.get(20)

bst.delete(12)

bst.delete(2)
print

for i in bst:
    print i
Beispiel #9
0
from TreeNode import TreeNode
from BinarySearchTree import BinarySearchTree

bst = BinarySearchTree()
bst.put(10, 'A')
bst.put(1, 'B')
bst.put(11, 'C')
bst[20] = 'D'

print(bst.get(10))
print(bst[11])
print(bst.get(-1))
print(10 in bst)