def to_sequence()

in multiset_codec/msbst.py [0:0]


def to_sequence(multiset):
    ''' Flatten a BST, representing a multiset, to a sequence (python list)'''
    flat = []

    def traverse(branch):
        if branch:
            size, y, left, right = branch
            traverse(left)
            freq = size - (left[0] if left else 0) - (right[0] if right else 0)
            flat.extend(freq * [y])
            traverse(right)
    traverse(multiset)
    return flat