#!/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))