def test_delete(self): tree = BinarySearchTree([2, 4]) assert tree.height() == 1 tree.delete(4) assert tree.height() == 0 tree.delete(2) assert tree.height() == 0 items = [18, 1, 53, 40, 63] tree.insert(10) tree = BinarySearchTree(items) tree.delete(1) assert tree.search(1) is None tree.delete(10) assert tree.search(10) is None tree.insert(57) tree.insert(98) tree.delete(63) assert tree.search(63) is None
def test_init_with_list_of_tuples(self): tree = BinarySearchTree([(2, 'B'), (1, 'A'), (3, 'C')]) assert tree.root.data == (2, 'B') assert tree.root.left.data == (1, 'A') assert tree.root.right.data == (3, 'C') assert tree.size == 3 assert tree.is_empty() is False assert tree.height() == 1 # Recursive height test
def test_search_with_3_items(self): # Create a complete binary search tree of 3 items in level-order items = [2, 1, 3] tree = BinarySearchTree(items) assert tree.search(1).data == 1 assert tree.search(2) == 2 assert tree.search(3) == 3 assert tree.search(4) is None assert tree.height() == 1 # Recursive height test
def test_height_with_7_items(self): # Create a complete binary search tree of 7 items in level-order items = [4, 2, 6, 1, 3, 5, 7] tree = BinarySearchTree(items) assert tree.height() == 2 assert tree.root.height() == 2 assert tree.root.left.height() == 1 assert tree.root.right.height() == 1 assert tree.root.left.left.height() == 0 assert tree.root.left.right.height() == 0 assert tree.root.right.left.height() == 0 assert tree.root.right.right.height() == 0
def test_height(self): tree = BinarySearchTree([2, 1, 3]) assert tree.height() == 1 tree.insert(4) assert tree.height() == 2
def test_height_and_size(self): # Let's try for a balanced tree first items = BinarySearchTree([4]) assert items.height() == 0 assert items.size == 1 # Height 1 items.insert(2) # Insert item, tree grows to 1 assert items.height() == 1 assert items.size == 2 items.insert(6) # Insert item 2; level is full, tree remains 1 assert items.height() == 1 assert items.size == 3 # Height 2 items.insert(1) assert items.height() == 2 assert items.size == 4 items.insert(3) assert items.height() == 2 assert items.size == 5 items.insert(5) assert items.height() == 2 assert items.size == 6 items.insert(7) assert items.height() == 2 assert items.size == 7 # Unbalanced tree items = BinarySearchTree([1, 2]) assert items.height() == 1 assert items.size == 2 items.insert(3) assert items.height() == 2 assert items.size == 3 items.insert(4) assert items.height() == 3 assert items.size == 4 items.insert(6) assert items.height() == 4 assert items.size == 5 items.insert(7) assert items.height() == 5 assert items.size == 6 items.insert(5) # Let's throw a left branching for good measure assert items.height() == 5 assert items.size == 7
def test_height(self): tree = BinarySearchTree() assert (tree.height()) is 0 tree.insert("A") assert (tree.height()) is 1