An introduction to functional programming
An introduction to functional programming
Balanced trees with removals: an exercise in rewriting and proof
Science of Computer Programming
Purely functional data structures
Purely functional data structures
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Efficient applicative data types
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A new representation for linear lists
STOC '77 Proceedings of the ninth annual ACM symposium on Theory of computing
Journal of Functional Programming
Red-black trees in a functional setting
Journal of Functional Programming
Finger trees: a simple general-purpose data structure
Journal of Functional Programming
A dichromatic framework for balanced trees
SFCS '78 Proceedings of the 19th Annual Symposium on Foundations of Computer Science
Hi-index | 0.00 |
Enter the computing arboretum and you will find a variety of well-studied trees: AVL trees (Adel'son-Vel'skiĭ & Landis 1962), symmetric binary B-trees (Bayer 1972), Hopcroft's 2-3 trees (Aho et al. 1974), the bushy finger trees (Guibas et al. 1977) and the colourful red-black trees (Guibas & Sedgewick 1978). In this pearl, we look at a more exotic species of balanced search trees, 1-2 brother trees (Ottmann et al. 1979), which deserves to be better known. Brother trees lend themselves well to a functional implementation with deletion (Section 5) as straightforward as insertion (Section 3), both running in logarithmic time. Furthermore, brother trees can be constructed from ordered lists in linear time (Section 4). With some simple optimisations in place, this implementation of search trees is one of the fastest around. So, fasten your seat belts.