Hey all—

I’m building a KDTree using NearestNeighbors.jl like this:

```
using StaticArrays, NearestNeighbors
pts = [SVector{2, Float64}(randn(2)) for _ in 1:1024]
tree = KDTree(pts, leafsize=25)
```

and I’m trying to find the correct way to get information about what indices of `tree.data`

are in leaf node `j`

. In this example there are 41 nodes, and I’d love to have some vector `leaf_indices`

such that `leaf_indices[j]`

is a `Vector{Int64}`

of length 25, or of course some other representation of the same information. I *think* that indices `1:25`

are leaf node 1, `26:50`

are in leaf node 2, and so on, but I’m not completely certain.

If that’s not right: I see that there are some internal functions for getting the indices of the (re-ordered) data based on the index of a leaf node, but I’m having trouble figuring out what the indices for the leaf nodes are. `NearestNeighbors.isleaf`

just checks if an index is larger than the number of non-leaf nodes (which in this case is 40), but there’s something I’m not understanding because `NearestNeighbors.get_leaf_range(tree.tree_data, 41)`

is `450:474`

, and the ranges only increase as I increase the argument. No integer argument here gives me `1:25`

, for example. So I’m clearly not understanding the design here.

Can anybody help me understand the right way to extract this information?