Salve, ho un dubbio algoritmico relativo alla codifica canonica di Huffman.
Supponendo di dover codificare questo insieme di caratteri: abbccccdddddddd, utilizzando l'algoritmo di Huffman otterrei il seguente albero binario:
codice:
            O
           / \
          d   O
             / \
            c   O
               / \
              b   a
Successivamente sfruttando le profondità delle foglie nell'albero:
d = 1
c = 2
b = 3
a = 3


ed utilizzando l'algoritmo per generare codici canonici:
codice:
    /* codifica canonica a 0 */
    void canonical_huff() {
        uint16_t len  = 0;
        uint32_t code = 0;
        for (auto & i : _table) {
            code <<= i._numl - len;
            i._code = code;
            len = i._numl;
            ++code;
        }
    }

ottengo i seguenti:
d = 0
c = 10
a = 110
b = 111


Il mio problema riguarda la decodifica, supponendo di avere a disposizione questa tabellina di codici ed una funzione che mi legga i caratteri compressi bit a bit, come posso fare per decodificare senza ricostruire l'albero?
grazie