This implementation of the rebuilding algorithm is different from the one described in Section 4.5 of the paper. However the effect is practically the same. Namely, given a tree t_i build using threshold T_i, if we set a new threshold T_(i+1) and call rebuildTree (assuming maxEntries stays the same) we will obtain a more compact tree.
Since the CFTree is sensitive to the order of the data, there may be cases in which, if we set the T(i+1) so that non of the sub-clusters (i.e., the leaf entries) can be merged (e.g., T(i+1)=-1) we might actually obtain a new tree t_(i+1) containing more nodes than t_i. However, the obtained sub-clusters in t_(i+1) will be identical to the sub-clusters in t_i.
In practice, though, if T(i+1) > T(i), the tree t_(i+1) will usually be smaller than t_i. Although the Reducibility Theorem in Section 4.5 may not hold anymore, in practice this will not be a big problem, since even in those cases in which t_(i+1)>t_i, the growth should be very small.
The advantage is that relaxing the constraint that the size of t_(i+1) must be less than t_i makes the implementation of the rebuilding algorithm much easier.
the new (usually more compact) CFTree