예제 #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
예제 #2
0
파일: treeset.py 프로젝트: samrushing/avl
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
예제 #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)
예제 #4
0
파일: treeset.py 프로젝트: samrushing/avl
 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)
예제 #5
0
파일: test.py 프로젝트: pombredanne/avl
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)
예제 #6
0
파일: test.py 프로젝트: pombredanne/avl
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)
예제 #7
0
파일: huffman.py 프로젝트: samrushing/avl
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]
예제 #8
0
파일: huffman.py 프로젝트: samrushing/avl
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]
예제 #9
0
파일: test_doc.py 프로젝트: samrushing/avl
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
예제 #10
0
파일: test_doc.py 프로젝트: samrushing/avl
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
예제 #11
0
def difference (a, b):
    result = avl.newavl(a)
    for key in b:
        if a.has_key (key):
            result.remove (key)
    return result
예제 #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
예제 #13
0
파일: test_doc.py 프로젝트: samrushing/avl
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])
예제 #14
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_4():
    t = avl.newavl()
    t.insert(50)
    t.insert(45)
    t.remove(50)
    assert str(t) == "[45]"
예제 #15
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_10(random_tree):
    assert isinstance(random_tree[3:8], type(avl.newavl()))
예제 #16
0
파일: readme.py 프로젝트: samrushing/avl
#! /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]
예제 #17
0
파일: treeset.py 프로젝트: samrushing/avl
def union(a, b):
    result = avl.newavl(a)
    for key in b:
        if key not in a:
            result.insert(key)
    return result
예제 #18
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_2_1_3():
    z = avl.newavl(None, lambda x, y: cmp(x[0], y[0]))
    z.insert('hello')
    z.span('h')
예제 #19
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_7_a():
    t = avl.newavl([i for i in range(30)][::2])
    assert t[12] == 24
예제 #20
0
파일: test_doc.py 프로젝트: samrushing/avl
def t():
    return avl.newavl([1, 2, 3, 4, 5])
예제 #21
0
파일: test_doc.py 프로젝트: samrushing/avl
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]"
예제 #22
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_1():
    t = avl.newavl()
    assert str(t) == "[]"
예제 #23
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_7():
    t = avl.newavl([i for i in range(30)])
    assert t[25] == 25
예제 #24
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_2():
    t = avl.newavl()
    t.insert(50)
    assert str(t) == "[50]"
예제 #25
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_6():
    t = avl.newavl([i for i in range(30)])
    assert len(t) == 30
예제 #26
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_2_repr():
    t = avl.newavl()
    t.insert(50)
    assert repr(t) == "tree([50], None)"
예제 #27
0
파일: treeset.py 프로젝트: samrushing/avl
def difference(a, b):
    result = avl.newavl(a)
    for key in b:
        if key in a:
            result.remove(key)
    return result
예제 #28
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_3():
    t = avl.newavl()
    t.insert(50)
    t.insert(45)
    assert str(t) == "[45, 50]"
예제 #29
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_1_repr():
    t = avl.newavl()
    assert repr(t) == "tree([], None)"
예제 #30
0
파일: test_doc.py 프로젝트: samrushing/avl
def test_8():
    t = avl.newavl([i for i in range(30)])
    assert t[-1] == 29