穿越霍夫曼树

时间:2012-11-21 04:25:46

标签: java tree huffman-code

所以我遇到了遍历我的huffmann树并找到每个char路径的代码的问题。基本上我所做的是这样的:我使用FileReader读取文件,获取每个字节然后将其作为char处理,然后我将其放在char[]数组中并使用另一个int[]数组来保存每个字符的对应频率。之后,我通过遍历数组并使用char和frequency创建了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库,但不知道为什么,他喜欢让事情变得复杂。

0 个答案:

没有答案
相关问题