Esempio n. 1
0
def intersection (a, b):
    ta = avl.newavl(a)
    result = avl.newavl()
    for x in b:
        if ta.has_key (x):
            result.insert (x)
            ta.remove (x)
    return result
Esempio n. 2
0
def intersection(a, b):
    ta = avl.newavl(a)
    result = avl.newavl()
    for x in b:
        if x in ta:
            result.insert(x)
            ta.remove(x)
    return result
Esempio n. 3
0
 def __init__ (self, set=None):
     if set == None:
         self.items = avl.newavl()
     elif type(set) == type([]):
         self.items = avl.newavl(set[:])
     elif type(set) == type(self):
         self.items = avl.newavl(set.items)
     else:
         self.items = avl.newavl(set)
Esempio n. 4
0
 def __init__(self, set=None):
     if set is None:
         self.items = avl.newavl()
     elif isinstance(set, list):
         self.items = avl.newavl(set[:])
     elif isinstance(set, avl_set):
         self.items = avl.newavl(set.items)
     else:
         self.items = avl.newavl(set)
Esempio n. 5
0
def random_indices_tree (length):
    t = avl.newavl()
    # build a 'list' of indices
    for num in range(length):
        t.insert(num)
    t2 = avl.newavl()
    for x in range(length):
        i = random.choice(t)
        t2.insert((x,i))
        t.remove(i)
    # return the tree as a list
    return map (lambda x: x[1], t2)
Esempio n. 6
0
def test(n):
    tree = avl.newavl()
    print 'generating random numbers...'
    t = timer(); nums = generate_test_numbers (n); t.end()
    fill_up(tree,nums)
    slice_test(tree)
    empty(tree)
Esempio n. 7
0
def huffman_tree (f):
    t = avl.newavl (f)
    while len(t) > 1:
        w1,c1 = n1 = t[0]
        w2,c2 = n2 = t[1]
        t.remove(n1)
        t.remove(n2)
        t.insert (((w1+w2),(c1,c2)))
    return t[0]
Esempio n. 8
0
def huffman_tree(f):
    t = avl.newavl(f)
    while len(t) > 1:
        w1, c1 = n1 = t[0]
        w2, c2 = n2 = t[1]
        t.remove(n1)
        t.remove(n2)
        t.insert(((w1 + w2), (c1, c2)))
    return t[0]
Esempio n. 9
0
def mixed_tree():
    def cmpfun(a, b):
        if isinstance(a, unicode) or isinstance(b, unicode):
            return cmp(str(a), str(b))
        return cmp(a, b)

    t = avl.newavl([i for i in range(10)], cmpfun)
    t.insert("Hey, where will this go?")
    return t
Esempio n. 10
0
def test_copy(mixed_tree):
    t2 = avl.newavl(mixed_tree)
    assert t2 is not mixed_tree
    assert str(mixed_tree) == (
        "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, Hey, where will this go?]"
    )
    assert str(t2) == (
        "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, Hey, where will this go?]"
    )
    t2 = None
Esempio n. 11
0
def difference (a, b):
    result = avl.newavl(a)
    for key in b:
        if a.has_key (key):
            result.remove (key)
    return result
Esempio n. 12
0
def union (a, b):
    result = avl.newavl(a)
    for key in b:
        if not a.has_key(key):
            result.insert(key)
    return result
Esempio n. 13
0
def random_tree():
    return avl.newavl(
        [25, 26, 28, 30, 40, 42, 48, 50, 51, 58, 62, 76, 76, 79, 81, 85, 91,
         91, 91, 99])
Esempio n. 14
0
def test_4():
    t = avl.newavl()
    t.insert(50)
    t.insert(45)
    t.remove(50)
    assert str(t) == "[45]"
Esempio n. 15
0
def test_10(random_tree):
    assert isinstance(random_tree[3:8], type(avl.newavl()))
Esempio n. 16
0
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

# Standard libraries.
import random

import avl

t = avl.newavl()
print(t)  # []
t.insert(50)
print(t)  # [50]
t.insert(45)
print(t)  # [45, 50]
t.remove(50)
print(t)  # [45]

t = avl.newavl()
for x in range(20):
    t.insert(random.randint(0, 100))
print(t)
# [3, 8, 12, 15, 15, 29, 32, 42, 44, 48, 50, 53, 55, 57, 69, 74, 75, 76, 79,
#  81, 88]
# if you've compiled in the debugging code (-DDEBUG_AVL)
#
# [Note: print_internal_structure() prints directly to stdout,
#     so it doesn't work in pythonwin, but will work with the
#  console-mode python.exe]
Esempio n. 17
0
def union(a, b):
    result = avl.newavl(a)
    for key in b:
        if key not in a:
            result.insert(key)
    return result
Esempio n. 18
0
def test_2_1_3():
    z = avl.newavl(None, lambda x, y: cmp(x[0], y[0]))
    z.insert('hello')
    z.span('h')
Esempio n. 19
0
def test_7_a():
    t = avl.newavl([i for i in range(30)][::2])
    assert t[12] == 24
Esempio n. 20
0
def t():
    return avl.newavl([1, 2, 3, 4, 5])
Esempio n. 21
0
def test_concatenate():
    t1 = avl.newavl([i for i in range(5)])
    t2 = avl.newavl([i for i in range(6, 15, 2)])
    assert str(t1 + t2) == "[0, 1, 2, 3, 4, 6, 8, 10, 12, 14]"
Esempio n. 22
0
def test_1():
    t = avl.newavl()
    assert str(t) == "[]"
Esempio n. 23
0
def test_7():
    t = avl.newavl([i for i in range(30)])
    assert t[25] == 25
Esempio n. 24
0
def test_2():
    t = avl.newavl()
    t.insert(50)
    assert str(t) == "[50]"
Esempio n. 25
0
def test_6():
    t = avl.newavl([i for i in range(30)])
    assert len(t) == 30
Esempio n. 26
0
def test_2_repr():
    t = avl.newavl()
    t.insert(50)
    assert repr(t) == "tree([50], None)"
Esempio n. 27
0
def difference(a, b):
    result = avl.newavl(a)
    for key in b:
        if key in a:
            result.remove(key)
    return result
Esempio n. 28
0
def test_3():
    t = avl.newavl()
    t.insert(50)
    t.insert(45)
    assert str(t) == "[45, 50]"
Esempio n. 29
0
def test_1_repr():
    t = avl.newavl()
    assert repr(t) == "tree([], None)"
Esempio n. 30
0
def test_8():
    t = avl.newavl([i for i in range(30)])
    assert t[-1] == 29