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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
 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