Java 穿越哈夫曼树

Java 穿越哈夫曼树,java,tree,huffman-code,Java,Tree,Huffman Code,所以我在遍历我的哈夫曼树并找到每个字符路径的代码时遇到了问题。基本上,我是这样做的:我使用一个文件阅读器读取文件,获取每个字节,然后将其视为一个字符,然后将其放入一个char[]数组,并使用另一个int[]数组保存每个字符对应的频率。之后,我通过移动数组并使用char和frequency创建树对象。我创建的每一棵树都将其存储到一个Tree[]数组中,然后使用该数组创建最后一棵哈夫曼树。现在我不知道如何在树中查找到字符的路径并创建路径代码。我只写了5个月的代码,所以我不是专家,我知道对于路径代码,

所以我在遍历我的哈夫曼树并找到每个字符路径的代码时遇到了问题。基本上,我是这样做的:我使用一个文件阅读器读取文件,获取每个字节,然后将其视为一个字符,然后将其放入一个char[]数组,并使用另一个int[]数组保存每个字符对应的频率。之后,我通过移动数组并使用char和frequency创建树对象。我创建的每一棵树都将其存储到一个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();
  }
}
我写这篇文章是为了通过移动每个字符的数组和相应的频率来创建哈夫曼树。。。
另外,我们的教授不允许我们使用诸如ArrayList之类的java库,但不知道为什么,他喜欢把东西复杂化。

你有没有编写过二叉树?用数组实现树不是一个好主意。您应该自己创建二叉树数据结构。这并不难:嗯,这将是我有史以来第一个二叉树哈哈,我知道基本结构,但我不明白一些事情。。。首先,我在那段代码中所做的是创建一个数组,数组中的树在开始时实际上是叶子,然后取前两个,创建一个新的树,将这两个树作为子树,然后将其添加到数组中。。。问题是,我认为通过切换阵列,我实际上杀死了树的儿子。。。我应该使用列表而不是数组吗?