Алгоритм декомпрессии Хаффмана возвращает пути с нулевым префиксом - PullRequest
0 голосов
/ 19 октября 2019

Я работал над программой сжатия и декомпрессии Хаффмана. На этом этапе моя программа сжатия работает просто отлично, но я не могу заставить код распаковки воспроизвести исходный файл, который уже был сжат. Я думаю, что я делаю что-то не так. Полный код ниже. Пожалуйста, любая помощь будет оценена.

Я пишу в заголовке моего сжатого файла: моя хэш-карта частоты для перестройки дерева, дерево перестраивается, но теперь некоторые байты data[i] имеют нулевой путь (префикс)Почему это так и как я могу заставить его работать?

codePrefixMap читается из сжатого файла

byte[] data = (byte[]) ois.readObject();

for (int i = 0; i < data.length; i++) {
                String prefix = codePrefixMap.get(data[i]);

            if (prefix == null) {
                // prefix is sometimes null (i don't know why)
                continue;
            }

            // Commence a traverser a partir la racine root
            Node temp = root;

            int y = 0;

            while (temp.getLeft() != null) {
                if (prefix.charAt(y) == '0') {
                    temp = temp.getLeft();
                } else {
                    temp = temp.getRight();
                }
                y += 1;
            }

            byte code = temp.getValue();

            dos.write(code);
            // System.out.println((char) code);
        }   
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
...