ファイルのバイト[]からハフマンツリーを作成して、それを圧縮しようとしています。 BitSequenceを作成するには、バイトのHashMapと、ノードへのパスに相当する対応する文字列値を作成します。手作業で作業するときは、私のプログラムよりもずっと長いBitSequenceの長さを取得しています。ここでバイト値のHashMapを作成し、私のコードは、そのノードのバイトの値がされている。ハフマンノードへのパスを取得する
public static HashMap<Byte, String> getPath(Node n)
{
HashMap<Byte, String> map = new HashMap<Byte, String>();
buildPath(n, "", map);
return map;
}
public static void buildPath(Node n, String s, HashMap<Byte, String> map) {
if(n != null)
{
if (n.left != null){
buildPath(n.left, s+"0", map);
}
if (n.right != null){
buildPath(n.right, s+"1", map);
}
if(n.left == null && n.right == null)
{
map.put(bytes, s);
return;
}
}
return;
}
私は、ファイルから元のバイト配列を経由してのハフマンパスを追加するために生成されたHashMapを使います私はハフマンツリー自体で圧縮して、後で解読できるようにするシーケンスです。パスを生成する方法にエラーがありますか、または私の問題が別の場所にある可能性がありますか?