Have a look at a new approach to dealing with sparse data structures.
Yuanming Hu and his team presented Taichi, a new data-oriented programming language that allows managing complex structures. The core here is an advanced data structure-agnostic interface for writing computation code, providing a number of elementary components with different sparsity properties. You can basically use these components to set up different multi-level sparse data structures.
"This decoupling of data structures from computation makes it easy to experiment with different data structures without changing computation code, and allows users to write computation as if they are working with a dense array, states abstract. "Our compiler then uses the semantics of the data structure and index analysis to automatically optimize for locality, remove redundant operations for coherent accesses, maintain sparsity and memory allocations, and generate efficient parallel and vectorized instructions for CPUs and GPUs."