The motivation for k-d trees and ball trees is that k-nearest neighbors involves eliciting the distances between a particular data point and every other data point, which becomes inefficient as the number of data points grows large.
However, a step in the ball tree algorithm involves finding the least-near neighbor to a data point, and also the least-near neighbor to that least-near neighbor. This also feels like it should involve eliciting distances over the entire set of data points (twice). Furthermore, any clever shortcut to one of these feels like it should also be a clever shortcut to the other, by symmetry.
How does this address the inefficiencies in k-nearest neighbors rather than making them worse?