Example #1
0
def test_delete_on_complex_tree():
    """Test that the selected node is deleted."""
    from bst import Bst
    nodes = [10, 9, 15, 2, 6, 12, 20, 1, 3]
    new_bst = Bst()
    for item in nodes:
        new_bst.insert(item)
    new_bst.delete(2)
    assert new_bst.contains(2) is False
Example #2
0
def test_delete_on_range():
    """Test that the node selected is removed from the tree."""
    from bst import Bst
    new_bst = Bst()
    for items in range(20):
        new_bst.insert(items)
    new_bst.delete(10)
    assert new_bst.contains(10) is False
    assert new_bst.size == 19
Example #3
0
def test_delete():
    """Test that the selected node is deleted."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(1)
    new_bst.delete(1)
    assert new_bst.contains(1) is False
    assert new_bst.head is None
    assert new_bst.size == 0
Example #4
0
def test_rotated_root_after_delete_l2():
    """Test that tree rotates as expected after deleting from heavier side."""
    tree = Bst()
    for val in [4, 5, 2, 3]:
        tree.insert(val)
    assert tree.value == 4
    tree.delete(5)
    assert all([tree.value == 3,
                tree.left_child.value == 2,
                tree.right_child.value == 4])
Example #5
0
def test_rotated_root_after_delete_ll():
    """Test that tree rotates as expected after deleting from heavier side."""
    tree = Bst()
    for val in [3, 4, 2, 1]:
        tree.insert(val)
    assert tree.value == 3
    tree.delete(4)
    assert all([tree.value == 2,
                tree.left_child.value == 1,
                tree.right_child.value == 3])
Example #6
0
def test_rotated_root_after_delete_rl():
    """Test that tree rotates as expected after deleting from lighter side."""
    tree = Bst()
    for val in [2, 1, 5, 4]:
        tree.insert(val)
    assert tree.value == 2
    tree.delete(1)
    assert all([tree.value == 4,
                tree.left_child.value == 2,
                tree.right_child.value == 5])
Example #7
0
def test_edge_cases_delete_tree():
    """Test deletion on tree from EdgeCases example tree."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(10)
    new_bst.insert(20)
    new_bst.insert(5)
    new_bst.delete(10)
    assert new_bst.contains(10) is False
    assert new_bst.size == 2
    assert new_bst.head.value == 20
    assert new_bst.head.right is None
    assert new_bst.head.left.value == 5
Example #8
0
def test_delete_on_small_range():
    """Test that the node selected is removed from the tree."""
    from bst import Bst
    new_bst = Bst()
    for items in range(5):
        new_bst.insert(items)
    new_bst.delete(1)
    assert new_bst.contains(1) is False
    assert new_bst.size == 4
    assert new_bst.head.value == 2
    assert new_bst.head.left.value == 0
    assert new_bst.head.right.value == 3
    assert new_bst.head.right.right.value == 4
Example #9
0
def test_off_balance_delete_tree_non_head():
    """Test deletion on tree from complex tree."""
    from bst import Bst
    new_bst = Bst()
    new_bst.insert(10)
    new_bst.insert(20)
    new_bst.insert(5)
    new_bst.insert(15)
    new_bst.insert(25)
    new_bst.delete(20)
    assert new_bst.contains(20) is False
    assert new_bst.size == 4
    assert new_bst.head.value == 10
    assert new_bst.head.right.value == 25
    assert new_bst.head.left.value == 5
    assert new_bst.head.right.left.value == 15
Example #10
0
    # bst.put(5, "딸기")
    # bst.put(70, "키위")

    print("InOrder output >> ", end="")
    bst.inOrder(bst.root)

    print("\n15 ?? :", bst.get(50))

    # delnode = bst.delete_min()
    # print("\n 최소값 삭제 후 트리 >> ", end="s")
    # bst.inOrder(bst.root)
    #
    #
    # print("\n최소값 : ", end="")
    # m = bst.min()
    # print(m.key, m.value)
    #
    #
    # print("\n최댓값 삭제 후 트리 >> ", end="")
    # delnode2 = bst.delete_max()
    # bst.inOrder(bst.root)
    #
    # print("\n최댓값 : ", end="")
    # m2 = bst.max()
    # print(m2.key, m2.value)

    print(
        "==========================================================================="
    )
    bst.delete(50)
    bst.inOrder(bst.root)