def insert_then_forward_lookup()

in multiset_codec/msbst.py [0:0]


def insert_then_forward_lookup(multiset, x):
    ''' Performs insert followed by forward_lookup, in one-pass.'''
    size, y, left, right = multiset or (0, x, (), ())
    size = size + 1
    if x > y:
        right, (start_right, freq) = insert_then_forward_lookup(right, x)
        start = size - right[0] + start_right
    elif x < y:
        left, (start, freq) = insert_then_forward_lookup(left, x)
    else:
        start = left[0] if left else 0
        freq = size - start - (right[0] if right else 0)
    return (size, y, left, right), (start, freq)