Self-adjusting binary search trees
Journal of the ACM (JACM)
AVL-trees for localized search
Information and Control
An O (n log log n)-time algorithm for triangulating a simple polygon
SIAM Journal on Computing
A skip list cookbook
Some fast algorithms on graphs and trees
Some fast algorithms on graphs and trees
Purely functional representations of catenable sorted lists
STOC '96 Proceedings of the twenty-eighth annual ACM symposium on Theory of computing
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
An optimal RAM implementation of catenable min double-ended queues
SODA '94 Proceedings of the fifth annual ACM-SIAM symposium on Discrete algorithms
Finger search trees with constant insertion time
Proceedings of the ninth annual ACM-SIAM symposium on Discrete algorithms
Journal of the ACM (JACM)
Design of Dynamic Data Structures
Design of Dynamic Data Structures
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Localized search in sorted lists
STOC '81 Proceedings of the thirteenth annual ACM symposium on Theory of computing
A new representation for linear lists
STOC '77 Proceedings of the ninth annual ACM symposium on Theory of computing
On the Dynamic Finger Conjecture for Splay Trees Part II: The Proof
On the Dynamic Finger Conjecture for Splay Trees Part II: The Proof
Dictionaries using variable-length keys and data, with applications
SODA '05 Proceedings of the sixteenth annual ACM-SIAM symposium on Discrete algorithms
Data streams: algorithms and applications
Foundations and Trends® in Theoretical Computer Science
Compact dictionaries for variable-length keys and data with applications
ACM Transactions on Algorithms (TALG)
Bulk-Insertion Sort: Towards Composite Measures of Presortedness
SEA '09 Proceedings of the 8th International Symposium on Experimental Algorithms
Hi-index | 0.00 |
We show how to support the finger search operation on degree-balanced search trees in a space-efficient manner that retains a worst-case time bound of O(log d), where d is the difference in rank between successive search targets. While most existing tree-based designs allocate linear extra storage in the nodes (e.g., for side links and parent pointers), our design maintains a compact auxiliary data structure called the "hand" during the lifetime of the tree and imposes no other storage requirement within the tree.The hand requires O(log n) space for an n-node tree and has a relatively simple structure. It can be updated synchronously during insertions and deletions with time proportional to the number of structural changes in the tree. The auxiliary nature of the hand also makes it possible to introduce finger searches into any existing implementation without modifying the underlying data representation (e.g., any implementation of Red-Black trees can be used). Together these factors make finger searches more appealing in practice.Our design also yields a simple yet optimal in-order walk algorithm with worst-case O(1) work per increment (again without any extra storage requirement in the nodes), and we believe our algorithm can be used in database applications when the overall performance is very sensitive to retrieval latency.