  In tree based adaptive mesh refinement, elements are partitioned between
processes using a space filling curve. The curve establishes an ordering
between all elements that derive from the same root element, the tree. When
representing more complex geometries by patching together several trees, the
roots of these trees form an unstructured coarse mesh. We present an algorithm
to partition the elements of the coarse mesh such that (a) the fine mesh can be
load-balanced to equal element counts per process regardless of the
element-to-tree map and (b) each process that holds fine mesh elements has
access to the meta data of all relevant trees. As an additional feature, the
algorithm partitions the meta data of relevant ghost (halo) trees as well. We
develop in detail how each process computes the communication pattern for the
partition routine without handshaking and with minimal data movement. We
demonstrate the scalability of this approach on up to 917e3 MPI ranks and
.37e12 coarse mesh elements, measuring run times of one second or less.
