Exemplo n.º 1
0
def test_balanced_bst(lst):
    bst = LinkedBST()
    for i in lst:
        bst.add(i)
    bst.rebalance()
    start = time.time()
    for i in range(10**4):
        word = random.choice(lst)
        word1 = bst.find(word)
        assert word == word1
    return time.time() - start
Exemplo n.º 2
0
def search_in_balanced_tree():
    """
    return time to search for 1000 words in the balanced tree
    :return: float
    """
    tree = LinkedBST()
    sys.setrecursionlimit(150000)
    for word in readed_file:
        tree.add(word)
    tree.rebalance()
    start = time.time()
    for i in range(1000):
        tree.find(random_word())
    return time.time() - start
Exemplo n.º 3
0
def main():
    tmp_set, tmp_list = read_file('words.txt'), []
    searching_list = []
    counter = 0
    while True:
        try:
            tmp_list.append(tmp_set.pop())
            counter += 1
        except KeyError:
            break
    tmp_set = read_file('words.txt')
    counter = 0
    while counter < 10000:
        counter += 1
        searching_list.append(tmp_set.pop())
    tree = LinkedBST(tmp_list)
    print(
        'a) визначити час пошуку 10000 випадкових слів у впорядкованому за абеткою словнику (пошук у списку слів з використанням методів вбудованого типу list).'
    )
    time1 = time.time()
    for word in searching_list:
        l1 = tmp_list.index(word)
    print(time.time() - time1)

    print(
        'b) визначити час пошуку 10000 випадкових слів у словнику, який представлений у вигляді бінарного дерева пошуку. Бінарне дерево пошуку будується на основі словника в якому слова не впорядковані за абеткою. '
    )
    time1 = time.time()
    for word in searching_list:
        tree.find(word)
    print(time.time() - time1)

    if not tree.is_balanced():
        tree.rebalance()

    print(
        'c) Визначити час пошуку 10000 випадкових слів у словнику, який представлений у вигляді збалансованого бінарного дерева пошуку.'
    )

    time1 = time.time()
    for word in searching_list:
        tree.find(word)
    print(time.time() - time1)
Exemplo n.º 4
0
def main():
    tree = LinkedBST()
    print("Adding D B A C F E G")
    tree.add("D")
    tree.add("B")
    tree.add("A")
    tree.add("C")
    tree.add("F")
    tree.add("E")
    tree.add("G")

    print("\nExpect True for A in tree: ", "A" in tree)

    print("\nString:\n" + str(tree))

    clone = LinkedBST(tree)
    print("\nClone:\n" + str(clone))

    print("Expect True for tree == clone: ", tree == clone)

    print("\nFor loop: ", end="")
    for item in tree:
        print(item, end=" ")

    print("\n\ninorder traversal: ", end="")
    for item in tree.inorder(): print(item, end=" ")

    # print("\n\npreorder traversal: ", end="")
    # for item in tree.preorder(): print(item, end = " ")

    # print("\n\npostorder traversal: ", end="")
    # for item in tree.postorder(): print(item, end = " ")

    # print("\n\nlevelorder traversal: ", end="")
    # for item in tree.levelorder(): print(item, end = " ")

    print("\n\nRemoving all items:", end=" ")
    for item in "ABCDEFG":
        print(tree.remove(item), end=" ")

    print("\n\nExpect 0: ", len(tree))

    tree = LinkedBST(range(1, 16))
    print("\nAdded 1..15:\n" + str(tree))

    lyst = list(range(1, 16))

    random.shuffle(lyst)
    tree = LinkedBST(lyst)
    print("\nAdded ", lyst, "\n" + str(tree))

    lyst = [113, 30, 68, 74, 45, 91, 88]
    # random.shuffle(lyst)
    tree = LinkedBST(lyst)
    print(tree, tree.height())
    print(tree.isBalanced())
    print(tree.rangeFind(30, 91))
    print(tree.successor(20))
    print(tree.predecessor(50))
    tree.rebalance()
    print(tree)
Exemplo n.º 5
0
from binary_search_tree.linkedbst import LinkedBST

tree = LinkedBST()
tree.add("A")
tree.add("B")
tree.add("C")
tree.add("D")
tree.add("E")
tree.add("F")
tree.add("G")
tree.add("H")
tree.add("I")
tree.add("J")
tree.add("K")

print(tree)
print("Answer must be False: ", tree.isBalanced())
tree.rebalance()
print(tree)
print("Answer must be True: \n", tree.isBalanced())
print("Answer must be D : \n", tree.successor("C").data)
print("Answer must be B : \n", tree.predecessor("C").data)
print("Answer must be C: \n")
for i in tree.rangeFind("B", "D"):
    print(i.data)