Let P be a set of n points in Rd. A point pβP is
k\emph{-shallow} if it lies in a halfspace which contains at most k points
of P (including p). We show that if all points of P are k-shallow, then
P can be partitioned into Ξ(n/k) subsets, so that any hyperplane
crosses at most O((n/k)1β1/(dβ1)log2/(dβ1)(n/k)) subsets. Given such
a partition, we can apply the standard construction of a spanning tree with
small crossing number within each subset, to obtain a spanning tree for the
point set P, with crossing number O(n1β1/(dβ1)k1/d(dβ1)log2/(dβ1)(n/k)). This allows us to extend the construction of Har-Peled
and Sharir \cite{hs11} to three and higher dimensions, to obtain, for any set
of n points in Rd (without the shallowness assumption), a
spanning tree T with {\em small relative crossing number}. That is, any
hyperplane which contains wβ€n/2 points of P on one side, crosses
O(n1β1/(dβ1)w1/d(dβ1)log2/(dβ1)(n/w)) edges of T. Using a
similar mechanism, we also obtain a data structure for halfspace range
counting, which uses O(nloglogn) space (and somewhat higher
preprocessing cost), and answers a query in time O(n1β1/(dβ1)k1/d(dβ1)(log(n/k))O(1)), where k is the output size