Пример #1
0
class DB(object):
    def __init__(self, f):
        self.storage = Storage(f)
        self.tree = BinaryTree(self.storage)

    def assert_not_closed(self):
        if self.storage.closed:
            print("db closed")
            raise ValueError("db closed")

    def close(self):
        self.storage.close()

    def update(self):
        self.assert_not_closed()
        self.tree.update()

    def __getitem__(self, key):
        self.assert_not_closed()
        return self.tree.get(key)

    def __setitem__(self, key, value):
        self.assert_not_closed()
        return self.tree.set(key, value)

    def __delitem__(self, key):
        self.assert_not_closed()
        return self.tree.delete(key)

    def __contains__(self, key):
        self.assert_not_closed()
        try:
            self[key]
        except KeyError:
            return False
        else:
            return True

    def __len__(self):
        return len(self.tree)

    def listAll(self):
        return self.tree.listAll()
Пример #2
0
def main():
    tree = BinaryTree()
    tree.set('c', 'C')
    tree.set('h', 'H')
    tree.set('a', 'A')
    tree.set('e', 'E')
    tree.set('f', 'F')
    tree.set('d', 'D')
    tree.set('b', 'B')
    tree.set('k', 'K')
    tree.set('j', 'J')
    tree.set('i', 'I')
    tree.set('g', 'G')
    tree.set('l', 'L')

    print('Lookups:')
    print(tree.get('f'))
    print(tree.get('b'))
    print(tree.get('i'))
    print()
    print(tree)
    print()

    print('DFS preorder:')
    for key, value in tree.walk_dfs_preorder():
        print(key, value)
    print()

    print('DFS inorder:')
    for key, value in tree.walk_dfs_inorder():
        print(key, value)
    print()

    print('DFS postorder:')
    for key, value in tree.walk_dfs_postorder():
        print(key, value)
    print()

    print('BFS:')
    for key, value in tree.walk_bfs():
        print(key, value)
    print()

    print('Initial tree:')
    print(tree)
    print()

    print('Remove b:')
    tree.remove('b')
    print(tree)
    print()

    print('Remove f:')
    tree.remove('f')
    print(tree)
    print()

    print('Remove h:')
    tree.remove('h')
    print(tree)
    print()