Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java,如何获得哈夫曼树的编码树?_Java_Arrays_String_Tree_Huffman Code - Fatal编程技术网

使用Java,如何获得哈夫曼树的编码树?

使用Java,如何获得哈夫曼树的编码树?,java,arrays,string,tree,huffman-code,Java,Arrays,String,Tree,Huffman Code,给定一个构建的树和它工作所需的所有变量,我只需要理解如何从哈夫曼树中获取编码树 更具体地说,我需要返回Huffman树的字符串编码。未向函数传递任何参数。它只是一个getHuffMantreeCoded()函数,返回树的编码字符串,我不知道该怎么做 我不提供这个问题的代码,因为其余部分已经完成了,而且很长/对于学校来说。。。我想我最好用语言来理解 我需要穿过这棵树吗?我需要递归循环吗?我需要传递一个带有哈夫曼树字符串编码的字符串变量。假设所有东西的函数和结构都已经存在(树、获取编码测试、优先级队

给定一个构建的树和它工作所需的所有变量,我只需要理解如何从哈夫曼树中获取编码树

更具体地说,我需要返回Huffman树的字符串编码。未向函数传递任何参数。它只是一个getHuffMantreeCoded()函数,返回树的编码字符串,我不知道该怎么做

我不提供这个问题的代码,因为其余部分已经完成了,而且很长/对于学校来说。。。我想我最好用语言来理解

我需要穿过这棵树吗?我需要递归循环吗?我需要传递一个带有哈夫曼树字符串编码的字符串变量。假设所有东西的函数和结构都已经存在(树、获取编码测试、优先级队列实现等),我将如何着手呢。要得到哈夫曼树的字符串,一般要采取什么步骤


-谢谢

我想你要问的是:如果我有符号,我如何使用哈夫曼树为该符号生成代码

你没有。对于你信息中的每一个符号,这都是一件可怕的事情。相反,您要做的是递归地遍历整个树一次,然后在每个叶上,将符号及其代码添加到表中。丢弃树并使用表进行编码

您甚至不需要这样做,因为您可以忽略0和1对左分支和右分支的赋值中内置的实际代码。但是,该赋值是完全任意的,任何其他赋值都会给您相同的压缩。您需要从哈夫曼树中获得的唯一信息是每个符号的代码长度(以位为单位)。递归遍历树并生成符号及其代码长度表


然后您可以使用a进行编码。

您是否仔细检查了有关编码外观的任何规范?对一棵树进行编码有上百种不同的方法,如果它是为了一个任务,我希望至少对它应该如何编码有一些限制。是的,有一个规范,但我真的不太担心,我更担心的是你如何通过树找到一个值?类似于一个数组,在这个数组中,我可以迭代或递归地遍历每个值[I],并将其分配给一个变量,或者比较它或我想要的任何东西。如何遍历/读取树中的值?啊,现在我明白了问题所在。这个答案有用吗?