Blooming trees: Space-efficient structures for data representation