R* tree
R*-trees are a variant of R-trees used for indexing spatial information. R*-trees have slightly higher construction cost than standard R-trees, as the data may need to be reinserted; but the resulting tree will usually have a better query performance. Like the standard R-tree, it can store both point and spatial data.
It was proposed by Norbert Beckmann, Hans-Peter Kriegel, Ralf Schneider, and Bernhard Seeger in 1990.
Difference between R*-trees and R-trees
Minimization of both coverage and overlap is crucial to the performance of R-trees. Overlap means that, on data query or insertion, more than one branch of the tree needs to be expanded (due to the way data is being split in regions which may overlap). A minimized coverage improves pruning performance, allowing to exclude whole pages from search more often, in particular for negative range queries.
The R*-tree attempts to reduce both, using a combination of a revised node split algorithm and the concept of forced reinsertion
at node overflow. This is based on the observation that R-tree structures are highly susceptible
to the order in which their entries are inserted, so an insertion-built (rather than bulk-loaded) structure
is likely to be sub-optimal. Deletion and reinsertion of entries allows them to "find" a place in the tree
that may be more appropriate than their original location.