1. A method for generating a hierarchical data structure associated with a plurality of arbitrary-length bit strings, the method comprising: a) for each of the plurality of arbitrary-length bit strings within a group, hashing the arbitrary-length bit string, using a selected hash function from a plurality of hash functions, to generate a hash value representing an n-bit binary address defining a location of a virtual bin; b) for each of n bit locations, determining a bit location count of all of the generated n-bit binary addresses; c) determining a representative bit location corresponding to one of the n bit locations; d) storing an indication of the hash function and the representative bit location; e) for each of the plurality of arbitrary-length bit strings, assigning the arbitrary-length bit string to one of a first group and a second group using a bit value at the representative bit location of its hash value, wherein the arbitrary-length bit string is assigned to a first group if the bit value is of a fist bit value and a second group if the bit value is of a second bit value; f) for each of the groups, repeating acts (a) through (e) to generate two further sub-groups until each of the two further sub-groups has one or no assigned arbitrary-length bit string; and g) storing, for each of the plurality of arbitrary-length bit strings, the arbitrary-length bit string or a pointer thereto, in a memory location defined by a concatenation of the bit values.