Derivation of a Maximally Parallel Algorithm for Balancing Binary Search Trees
A recent trend in program methodologies is to derive efficient parallel programs from sequential programs. This paper explores the question of transforming a sequential algorithm into an efficient parallel algorithm by considering the problem of balancing binary search trees. The derivation of the parallel algorithm makes use of stepwise refinement. We first derive a new iterative balancing algorithm that exploits the similarity of pointer restructuring required at all the nodes at the same level. From this we derive a parallel algorithm that has time complexity O(1) on an $N$-processor configuration. This achieves the theoretical limit of speed-up possible in a multi-processor configuration.