#!/usr/bin/python3 # ================================================================== # collect statistics about building binary trees # ================================================================== from random import randint from random import sample import unittest import timeit import numpy as np import btree_9 as bt ##import btree_a as bt # ---- create a tree ----------------------------------------------- def create_tree(tree,values): for i in values: tree.insert(bt.Node(i)) # ---- create random node values ----------------------------------- # ---- without replacement - no duplicates ------------------------- def create_random_node_values(elms=20,maxint=99): print('create tree with random nodes - no duplicates') values = sample(range(1,maxint),elms) return values # ------------------------------------------------------------------ # main test # ------------------------------------------------------------------ values = create_random_node_values(100,10000) tree = bt.BinaryTree() start = timeit.timeit() create_tree(tree,values) end = timeit.timeit() ##tree.print_tree_values() ##tree.print_tree_nodes() ##tree.print_tree_structure() height1 = tree.max_height() count1 = tree.count_nodes() print('\nun-balanced tree height={} count={}'.format(height1,count1)) print('\nend={:.6f}, start={:.6f}, end-start={:.6f}'. format(end,start,end-start)) print('\n------------------------------------------------------------') tree = None tree = bt.BinaryTree() tree.set_balance(True) start = timeit.timeit() create_tree(tree,values) end = timeit.timeit() ##tree.print_tree_values() ##tree.print_tree_nodes() ##tree.print_tree_structure() height2 = tree.max_height() count2 = tree.count_nodes() print('\nbalanced tree height={} count={}'.format(height2,count2)) print('\nend={:.6f}, start={:.6f}, end-start={:.6f}'. format(end,start,end-start))