an empirical evaluation of algorithms for dynamically maintaining binary search trees
Algorithms for dynamically maintaining and utilizing binary search trees are empirically compared and evaluated. The evaluation is based on the performance of the algorithms using simulated search requests. Search keys are generated using weights which are unknown and in general unequal. The algorithms provide for inserting new nodes, searching for existing nodes, and in some cases dynamically modifying the tree in an attempt to reduce its weighted path length or search time. Included in the evaluation are algorithms for height-balanced trees, weight-balanced trees, and trees of bounded balance, as well as some combination algorithms. Also included are a basic search algorithm which performs no rebalancing, and an optimizing algorithm. In addition to the standard data, unweighted search keys, specially weighted search keys, and partially ordered key sequences are also considered. The evaluation is based primarily on the execution times of the algorithms, although weighted path lengths are also given. A combination algorithm gives the fastest speeds, although the basic search algorithm is shown to be the best for most purposes.
binary search trees weighted path length dynamic trees avl trees optimal trees weighted trees balanced trees bb trees