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