Top trees are a self-adjusting data structure that can be used by multiple tree algorithms simultaneously. They allow for simple divide-and-conquer algorithms. A top tree is defined for an underlying tree and up to two external boundary vertices. It is a binary tree where nodes are clusters of the underlying tree, leaves are edges of that tree, and neighboring clusters that intersect at a single vertex are parent and child clusters.