Save a frequency table to a file. (huffman compactor)

0

Hello,

I'm developing a Huffman algorithm job, and I'm having a hard time working with the frequency table. In short, I need to transform the characters of a text into a frequency table to create the huffman tree.

example: pineapple ... The table must have:

 a = 3
 b = 1
 c = 1
 x = 1
 i = 1

I'm using this code:

int[] charFreqs = new int[256];
    for (char c : test.toCharArray())
        charFreqs[c]++;

It creates the table and it is possible to mount the tree in this way:

    public static HuffmanTree buildTree(int[] charFreqs) {
    // Cria uma Fila de Prioridade 
    // A Fila será criado pela ordem de frequência da letra no texto
    PriorityQueue<HuffmanTree> trees = new PriorityQueue<HuffmanTree>();
    // Criar as Folhas da Árvore para cada letra 
    for (int i = 0; i < charFreqs.length; i++){
        if (charFreqs[i] > 0)
            trees.offer(new HuffmanLeaf(charFreqs[i], (char)i)); // Inser os elementos, nó folha, na fila de prioridade
    }
    // Percorre todos os elementos da fila
    // Criando a árvore binária de baixo para cima
    while (trees.size() > 1) {
        // Pega os dois nós com menor frequência
        HuffmanTree a = trees.poll(); // poll - Retorna o próximo nó da Fila ou NULL se não tem mais
        HuffmanTree b = trees.poll(); // poll - Retorna o próximo nó da Fila ou NULL se não tem mais

        // Criar os nós da árvore binária
        trees.offer(new HuffmanNode(a, b)); 
    }
    // Retorna o primeiro nó da árvore
    return trees.poll();

The problem is that for me to unpack a file, I need to read this table again and re-create the tree, so I need to save it to a text file or some other way, I'm trying with txt ... but when I read the txt and try to mount the table again, the tree is not reassembled, it is empty ...

I used this program as a base: link

Can anyone help me? maybe there's something I did not understand ...

    
asked by anonymous 12.11.2017 / 04:48

0 answers