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
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
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)
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)
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)