Expand description
Flat-array node storage with O(1) allocation and deallocation.
Internal nodes live in internals[0..capacity), leaves live in
leaves[0..capacity). Each arena owns its own free list (LIFO
stack of freed slot indices) so allocations reuse the most-recently
freed slot first — which keeps the live working set compact and
cache-friendly.
Bounding-box semantics: only internal nodes carry a cached
bounding box. Leaves know their point only through point_idx
into the crate::forest::PointStore; when a caller needs a
leaf bounding box it builds a degenerate one from the point
itself. This keeps leaf storage at 24 bytes (idx + parent +
mass) instead of duplicating per-leaf coordinate data, saving
~6 MB at default configuration.