def make_forest(self, chunksize):
        """ Divide a tree branch to a forest, 
            each subtree of size at most chunksize """
        heap = []
        heappush(heap, (-self.size, self))
        while True:
            w, x = heappop(heap)
            if w == 0: 
                heappush(heap, (0, x))
                break
            if x.less is None \
            or (x.size < chunksize):
                heappush(heap, (0, x))
                continue
            heappush(heap, (x.less.size, x.less))
            heappush(heap, (x.greater.size, x.greater))
        for w, x in heap:
            yield x
Divide a tree branch to a forest, 
            each subtree of size at most chunksize