【发布时间】:2018-10-11 14:00:03
【问题描述】:
我正在尝试制作一个简单的程序,它将接受字符串输入,为每个字符生成节点,从这些节点生成霍夫曼树,创建将字符映射到其编码位的哈希图,并使用哈希图打印输入在霍夫曼编码中。
到目前为止,我已经成功了。我想做的下一个想法是解压缩压缩字符串。我的方法是使用霍夫曼树,从根开始,如果有分支,我会查看第一个压缩位,如果为零(0),那么它将转到左侧分支如果是一 (1),它将转到正确的分支。以这种方式继续下去,对于每个分支,每次都会考虑压缩位的下一个值,直到到达最后一个节点,并存储该节点中存储的字符。我的程序运行良好,但是调用函数时返回一个空字符串值。
在搜索答案时,我发现有人尝试过类似的方法并取得了成功,但对我来说并非如此。 Decoding Huffman Tree
这是我当前的代码。字符串数组包含拆分为单个字符的压缩字符串。
private String generateHashTreeHelper(HuffmanTree t, String path, String[] arr) {
int i = 0;
while(i < arr.length){
if(t.isLeaf()){
path = path + t.c;
}
else{
if(arr[i] == "0"){
generateHashTreeHelper(t.leftBranch, path + t.leftBranch.c, arr);
}
else if(arr[i] == "1"){
generateHashTreeHelper(t.rightBranch, path + t.rightBranch.c, arr);
}
}
i++;
}
return path;
}
【问题讨论】:
-
你有一个错字 arr[i] == "0",它永远不会是真的,因为你正在比较内存位置。使用 arr[i].equals("0").
-
@CésarFerreira 我在项目中使用 netbeans。这是 IDE 建议的,我确实尝试过,但是没有任何区别。它仍然返回空字符串
标签: java huffman-code