예제 #1
0
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))
예제 #2
0
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))
예제 #3
0
파일: sol.py 프로젝트: tesuji/ctf-writeups
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]
예제 #5
0
	def __init__(self):
		self.avl = AVLTree()
예제 #6
0
파일: tree.py 프로젝트: A30lu5/blogs
#!/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 :('
예제 #7
0
                |                                                            |
            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
예제 #9
0
 def __init__(self):
     self.avl = AVLTree()