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