One of the classic data structures for storing point sets in R2 is the priority search tree, introduced by McCreight in 1985. We show that this data structure can be made in-place, i.e., it can be stored in an array such that each entry stores only one point of the point set and no entry is stored in more than one location of that array. It combines a binary search tree with a heap. We show that all the standard query operations can be performed within the same time bounds as for the original priority search tree, while using only O(1) extra space.We introduce the min–max priority search tree which is a combination of a binary search tree and a min–max heap. We show that all the standard queries which can be done in two separate versions of a priority search tree can be done with a single min–max priority search tree.As an application, we present an in-place algorithm to enumerate all maximal empty axis-parallel rectangles amongst points in a rectangular region R in R2 in O(mlogn) time with O(1) extra space, where m is the total number of maximal empty rectangles.
Read full abstract