1

所以我在遍历我的霍夫曼树并找到每个字符的路径代码时遇到了问题。基本上我所做的是:我使用 FileReader 读取文件,获取每个字节,然后将其视为一个字符,然后我将它放在一个char[]数组中并使用另一个int[]数组来保存每个字符对应的频率。之后,我通过在数组中移动并使用字符和频率来创建 Tree 对象。我创建的每棵树都将其存储到tree[]数组,然后使用该数组创建最终的霍夫曼树。现在我不知道如何在树中移动以找到字符的路径并创建路径代码。我已经编写了将近 5 个月的代码,所以我不是专家,我知道对于路径代码,右边是 0,左边是 1,我打算将这些值存储在另一个数组中,但是在阅读了之前的一些内容之后帖子我认为这是一个坏主意。请帮忙!我的树如下。

private void crearArbol(){
  arbol = new Arbol[cantidadSimbolos];
  for(int i = 0; i < cantidadSimbolos; ++i){
     arbol[i] = new Arbol(charsDelArchivo[i], frecuenciaChars[i]);     
  }
  while(arbol.length > 1){
     Arbol [] provisional = new Arbol[arbol.length-1];
     for(int p = 2; p <arbol.length; ++p){
        provisional[p-1] = arbol[p];      
     }
     provisional[0] = new Arbol(arbol[0].getFrecuencia()+arbol[1].getFrecuencia());
     provisional[0].adoptarHijos(arbol[0], arbol[1]);
     this.arbol = provisional;
     ordenarVectores(0);
     System.gc();
  }
}

我写的这个是通过移动每个字符的数组和相应的频率来创建霍夫曼树的...... ps。我们的教授不允许我们使用诸如 ArrayList 之类的 java 库,但不知道为什么,他喜欢让事情变得复杂。

4

0 回答 0