def test_binary_search_tree(): # Create a complete binary search tree of 3, 7, or 15 items in level-order # items = [2, 1, 3] items = [4, 2, 6, 1, 3, 5, 7] # items = [8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15] print('items: {}'.format(items)) tree = BinarySearchTree() print('tree: {}'.format(tree)) print('root: {}'.format(tree.root)) print('\nInserting items:') for item in items: tree.insert(item) print('insert({}), size: {}'.format(item, tree.size)) print('root: {}'.format(tree.root)) print('\nSearching for items:') for item in items: result = tree.search(item) print('search({}): {}'.format(item, result)) item = 123 result = tree.search(item) print('search({}): {}'.format(item, result)) print('\nTraversing items:') print('items in-order: {}'.format(tree.items_in_order())) print('items pre-order: {}'.format(tree.items_pre_order())) print('items post-order: {}'.format(tree.items_post_order())) print('items level-order: {}'.format(tree.items_level_order()))
class TreeMap: def __init__(self): self.tree = BinaryTree() self.size = 0 def __str__(self): """Return a formatted string representation of cursed tree map.""" items = ['{!r}: {!r}'.format(key, val) for key, val in self.items()] return '{' + ', '.join(items) + '}' def __repr__(self): """Return a string representation of this cursed tree map.""" return 'TreeMap({!r})'.format(self.items()) def items(self): items = self.tree.items_in_order() retlist = [] for item in items: retlist.append((item.key, item.value)) return retlist def keys(self): items = self.tree.items_in_order() for item in items: yield item.key def set(self, key, value): self.tree.set_insert(KeyValuePackage(key, value)) def get(self, key): return self.tree.search(key).value def contains(self, key): return self.tree.contains(key) def delete(self, key): self.tree.delete(key)