Zip-zip Trees: Making Zip Trees More Balanced, Biased, Compact, or Persistent
Abstract
We define simple variants of zip trees, called zip-zip trees, which provide several advantages over zip trees, including overcoming a bias that favors smaller keys over larger ones. We analyze zip-zip trees theoretically and empirically, showing, e.g., that the expected depth of a node in an -node zip-zip tree is at most , which matches the expected depth of treaps and binary search trees built by uniformly random insertions. Unlike these other data structures, however, zip-zip trees achieve their bounds using only bits of metadata per node, w.h.p., as compared to the bits per node required by treaps. In fact, we even describe a ``just-in-time'' zip-zip tree variant, which needs just an expected number of bits of metadata per node. Moreover, we can define zip-zip trees to be strongly history independent, whereas treaps are generally only weakly history independent. We also introduce \emph{biased zip-zip trees}, which have an explicit bias based on key weights, so the expected depth of a key, , with weight, , is , where is the weight of all keys in the weighted zip-zip tree. Finally, we show that one can easily make zip-zip trees partially persistent with only space overhead w.h.p.
Keywords
Cite
@article{arxiv.2307.07660,
title = {Zip-zip Trees: Making Zip Trees More Balanced, Biased, Compact, or Persistent},
author = {Ofek Gila and Michael T. Goodrich and Robert E. Tarjan},
journal= {arXiv preprint arXiv:2307.07660},
year = {2025}
}
Comments
v2 to appear in the journal Algorithmica, 24 pages, 9 figures