バイナリツリーが与えられているツリーのルートを与えられた特定の文字のビットコードを見つける再帰的メソッドを開発したい(図参照)Javaツリーの枝を走査してビットコードを生成する再帰的メソッドを実装する(ハフマン符号化)
すべての木が4つの分野すべての分岐はどちらか別のツリーまたはリーフ(char値)につながっ[左側のツリー、右ツリー、左の葉、右葉]を持っていた場所がツリークラスを持っていたとします。
String result = traverse(root, 'c', ""); //1011
public static String traverse(Tree t, char target, String bitcode){
String b = bitcode;
if (t.leftleaf != null){
if (t.leftleaf == target) {
b += "0";
}
}
if (t.rightleaf != null){
if (t.rightleaf == target){
b += "1";
}
}
if (t.lefttree != null){
b += "0" + traverse(t.lefttree,target, b);
}
if (t.righttree != null){
b += "1" + traverse(t.righttree,target, b);
}
return b;
}
ただし、上記の方法は期待どおりに機能しません。ビットコードが正しく表示されるように、どのように書き直すことができますか?
ノードごとに「親」がなく、子供のみが存在する場合はどうしますか?このようにエンコードすることはまだ可能ですか? – BDillan