Summary: [For the entire collection see Zbl 0753.00021.]

We introduce a self-adjusting $k$-ary search tree scheme to implement the abstract data type DICTIONARY.

We consider a self-adjustment heuristic for $k$-ary search trees. We present a heuristic called $k$-splaying and prove that the amortized number of node READs per operation in $k$-ary trees maintained using this heuristic is $O\left({log}_{2}n\right)$. (Note: All constants in our time bounds are independent of both $k$ and $n$.) This is within a factor of $O\left({log}_{2}k\right)$ of the amortized number of node READs required for a $B$-tree operation. A $k$-ary tree maintained using the $k$-splay heuristic can be thought of as a self-adjusting $B$-tree. It differs from a $B$-tree in that leaves may be at different depts and the use of space is optimal. We also prove that the time efficiency of $k$-splay trees is comparable to that of static optimal $k$-ary trees. If sequence $s$ in a static optimal tree takes time $t$, then sequence $s$ in any $k$-splay tree will take time $O(t{log}_{2}k+{n}^{2})$. These two results are $k$- ary analogues of two of *D. D. Sleator* and *R. E. Tarjan’s* [J. Assoc. Comput. Mach. 32, 652-686 (1985; Zbl 0631.68060)] results for splay trees. As part of our static optimality proof, we prove that for every static tree (including any static optimal tree) there is a balanced static tree which takes at most twice as much time on any sequence of search operations. This lemma allows us to improve our static optimality bound to $O(t{log}_{2}k+n{log}_{k}n)$, and similarly improve *D. D. Sleator* and *R. E. Tarjan’s* [loc. cit.] static optimality result.

##### MSC:

68P05 | Data structures |