Journal of Functional Programming



Article

Finger trees: a simple general-purpose data structure


RALF HINZE a1 and ROSS PATERSON a2
a1 Institut für Informatik III, Universität Bonn, Römerstraße 164, 53117 Bonn, Germany (e-mail: ralf@informatik.uni-bonn.de)
a2 Department of Computing, City University, London EC1V OHB, UK (e-mail: ross@soi.city.ac.uk)

Article author query
hinze r   [Google Scholar] 
paterson r   [Google Scholar] 
 

Abstract

We introduce 2-3 finger trees, a functional representation of persistent sequences supporting access to the ends in amortized constant time, and concatenation and splitting in time logarithmic in the size of the smaller piece. Representations achieving these bounds have appeared previously, but 2-3 finger trees are much simpler, as are the operations on them. Further, by defining the split operation in a general form, we obtain a general purpose data structure that can serve as a sequence, priority queue, search tree, priority search queue and more.

(Published Online November 16 2005)