/** Builds a Wavelet Tree for the string
* pointed by symbols assuming its length
* equals n and uses bmb to build the bitsequence */
- static_sequence_wvtree_noptrs(uint * symbols, uint n, static_bitsequence_builder * bmb, alphabet_mapper * am);
+ static_sequence_wvtree_noptrs(uint * symbols, uint n, static_bitsequence_builder * bmb, alphabet_mapper * am, bool deleteSymbols = false);
/** Destroys the Wavelet Tree */
virtual ~static_sequence_wvtree_noptrs();
virtual uint select(uint symbol, uint i);
virtual uint access(uint pos);
virtual uint size();
+
+ virtual vector<int> access(uint i, uint j, uint min, uint max);
+ virtual vector<int> accessAll(uint i, uint j);
+ virtual uint count(uint i, uint j, uint min, uint max);
virtual uint save(FILE *fp);
static static_sequence_wvtree_noptrs * load(FILE *fp);
protected:
+ void access(vector<int> &result, uint i, uint j, uint min, uint max, uint l, uint pivot, uint start, uint end);
+ void accessAll(vector<int> &result, uint i, uint j, uint l, uint pivot, uint start, uint end);
+ uint count(uint i, uint j, uint min, uint max, uint l, uint pivot, uint start, uint end);
static_sequence_wvtree_noptrs();