Java - 前缀字符串的霍夫曼树解码

时间:2017-10-23 17:23:59

标签: java string decode huffman-code

我正在为我的Huffman类编写一个解码方法,它应该解码0和1的字符串以找到原始的消息/字符串。但我似乎无法正确解码字符串。

我的解码方法:

xsl:element

我决定在一个简单的'a'字符串上测试我的代码:

  

原始字符串长度为1

     

编码字符串(长度为4),压缩为0.25

     

1010

     

现在我们尝试从编码的字符串重构原始文件

     

糟糕。有一个问题。解码后的字符串是:字母[letter = a,frequency = 6.5336]

编码和遍历是正确的;解码方法在某处。我想知道它是否与这行代码有关:

public String decode(String huffString) {
    // TODO: Fill in this method
    int position = 0;
    BinaryTreeNode current = this.root;
    String output = "";

    while(position < huffString.length()){

        if(huffString.charAt(position) == '0'){
            current = current.left;

            if(current.left == null && current.right == null){
                output+= current.getElement();
                current = this.root;
            }
        }
        else
        {
            current = current.right;
            if(current.left == null && current.right == null){
                output+= current.getElement();
                current = this.root;  
            }

        }
        position++;



    }
    return output;
}
}

任何人都可以帮助我吗?

编辑:正确输出的一个例子应该是:

  
    

输入字符串(END退出) - &gt;你好!

         

[...]

         

现在我们尝试从编码的字符串重构原始文件

         

有效!字符串是:你好那里

  

0 个答案:

没有答案