class AVLTreeAdapter(object): def __init__(self): self.avl = AVLTree() def insert(self, key, value): self.avl.insert(key) def find(self, key): node = self.avl.find(key) if node is not None: return AVLNodeAdapter(node) def iter(self): queue = [(self.avl.rootNode, 0)] while queue: node, depth = queue.pop() if node is None: continue yield AVLNodeAdapter(node), depth if node.leftChild: queue.append((node.leftChild, depth + 1)) if node.rightChild: queue.append((node.rightChild, depth + 1))
def main(): # r = remote(b'misc.chal.csaw.io', 9001) # r.recvuntil(b'preorder traversal!\n') # avl_server = r.recvuntil(b'\n').split(',') avl_server = [ 99, 77, 91, 70, 72, 69, 29, 23, 36, 52, 99, 77, 53, 97, 13, 0, 49, 99, 89, 25, 77, 85, 35, 11, 94, 22, 39, 47, 19, 16, 75, 9, 59, 14, 46, 7, 26, 28, 66, 20, 13, 2, 65, 18, 100, 78, 75, 71, 0, 75, 71, 23, 71, 72, 64, 92, 83, 81, 87, 29, 49, 73, 41, 75, 35, 49, 78, 77, 9, 95, 90, 16, 71, 69, 74, 97, 53, 83, 1, 78, 76, 55, 85, 72, 96, 87, 89, 26, 95, 23, 61, 31, 48, 20, 30, 71, 54, 100, 51, 33 ] tree = AVLTree(avl_server) tree.sanity_check() print(tree.as_list(0))
class IndexMap: def __init__(self,finder): self.forward = AVLTree() self.reverse = [] self.finder = finder def find_insert(self,item): found = self.forward.find(KeyRecord(item,None)) if found is not None: return found.key.record #key = handler(item) key = item.to_dict(self.finder) key_record = KeyRecord(item,len(self.reverse)) self.forward.insert(key_record) self.reverse.append(key) return key_record.record def __getitem__(self,index): return self.reverse[index]
def __init__(self): self.avl = AVLTree()
#!/usr/bin/env python2 import sys from pyavltree import AVLTree from flag import flag import random def gen_nums(n): for i in range(n): yield random.randint(0, 100) nums = list(gen_nums(100)) print 'Add these numbers to a AVL Binary Tree, then send them back in the preorder traversal!' print ','.join(str(i) for i in nums) tree = AVLTree(nums) sys.stdout.flush() res = raw_input('Send the preorder traversal in a comma sperated list.\n') if res == ','.join(str(i) for i in tree.preorder(tree.rootNode)): print 'you got it!' print flag else: print 'sorry that wasnt it :('
| | SearchSlice(USA) SearchSlice(INDIA) | | ----------------------------- SearchPool(WEST BEANGAL) | | | SearchPool(NEW YORK) SearchPool(CALIFORNIA) |- KOLKATA | | |- BARA BAZAR, KOLKATA |- PEARL STREET |- PEARL STREET |- 101 C, BARA BAZAR, KOLKATA |- TIME SQUARE |- 101 C, PEARL STREET |- 101 C, TIME SQUARE """ ny = AVLTree() ny.insert_node(PoolNode('PEARL STREET')) ny.insert_node(PoolNode('TIME SQUARE')) ny.insert_node(PoolNode('101 C', ['PEARL STREET'])) ny.insert_node(PoolNode('101 C', ['TIME SQUARE'])) print ny.out() poolNY = SearchPool(ny, PoolNode('NEW YORK')) cali = AVLTree() cali.insert_node(PoolNode('PEARL STREET')) print cali.out() poolCali = SearchPool(cali, PoolNode('CALIFORNIA')) usa = {
def __init__(self,finder): self.forward = AVLTree() self.reverse = [] self.finder = finder