예제 #1
0
def test_comparison_func_userdef():
    def comparison_func(val1, val2, CS: ComparisonSign):
        # default comparison function

        print(f'comp() val1:[{val1}] val2:[{val2}] cs:[{CS}]')

        if CS == ComparisonSign.EQUAL:
            return int(val1) == int(val2)
        if CS == ComparisonSign.LESS:
            return int(val1) < int(val2)
        if CS == ComparisonSign.GREATER:
            return int(val1) > int(val2)
        return False  # Never get here

    tree = BinarySearchTree(comparison_func)
    tree.add('1')
    tree.add('11')
    tree.add('111')
    tree.add('2')
    tree.add('22')
    tree.add('222')
    tree.add('3')
    tree.add('33')
    tree.add('333')
    expected = ['1', '2', '3', '11', '22', '33', '111', '222', '333']
    actual = tree.returnAsArr(TraverseMethod.IN_ORDER)
    assert expected == actual
예제 #2
0
def test_comparison_func_default():
    tree = BinarySearchTree()
    tree.add('1')
    tree.add('11')
    tree.add('111')
    tree.add('2')
    tree.add('22')
    tree.add('222')
    tree.add('3')
    tree.add('33')
    tree.add('333')
    expected = ['1', '11', '111', '2', '22', '222', '3', '33', '333']
    actual = tree.returnAsArr(TraverseMethod.IN_ORDER)
    assert expected == actual
예제 #3
0
def test_add_X_random():

    vals = []
    tree = BinarySearchTree()
    for j in range(50):

        # Generate a list of X elements (not duplicate)
        while True:
            x = str(random.randint(1, 200))
            try:
                noused = vals.index(x)
            except:
                # No Found
                break

        vals.append(x)
        tree.add(x)

    actual = tree.returnAsArr(TraverseMethod.IN_ORDER)

    vals.sort()
    expected = vals

    assert expected == actual