def test_binary_search_tree(): # Create a complete binary search tree of 3, 7, or 15 items in level-order # items = [2, 1, 3] items = [4, 2, 6, 1, 3, 5, 7] # items = [8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15] print('items: {}'.format(items)) tree = BinarySearchTree() print('tree: {}'.format(tree)) print('root: {}'.format(tree.root)) print('\nInserting items:') for item in items: tree.insert(item) print('insert({}), size: {}'.format(item, tree.size)) print('root: {}'.format(tree.root)) print('\nSearching for items:') for item in items: result = tree.search(item) print('search({}): {}'.format(item, result)) item = 123 result = tree.search(item) print('search({}): {}'.format(item, result)) print('\nTraversing items:') print('items in-order: {}'.format(tree.items_in_order())) print('items pre-order: {}'.format(tree.items_pre_order())) print('items post-order: {}'.format(tree.items_post_order())) print('items level-order: {}'.format(tree.items_level_order()))
def simple_tree(): t = BinaryTree() t.insert(5) t.insert(10) t.insert(2) t.insert(17) return t
def balanced_tree(): t = BinaryTree() t.insert(5) t.insert(2) t.insert(1) t.insert(3) t.insert(8) t.insert(7) t.insert(9) return t
def unbalanced_tree(): t = BinaryTree() t.insert(5) t.insert(6) t.insert(7) t.insert(8) t.insert(9) t.insert(4) return t
def test_balance_one_node_tree_returns_1(): t = BinaryTree() t.insert(1) assert t.balance() == 0
def complex_tree(): t = BinaryTree() t.insert(100) t.insert(80) t.insert(60) t.insert(40) t.insert(20) t.insert(50) t.insert(70) t.insert(90) t.insert(85) t.insert(95) t.insert(120) t.insert(140) t.insert(160) t.insert(180) t.insert(110) t.insert(175) t.insert(170) t.insert(176) return t