デコードするビット列を送信すると、適切にデコードするには追加のビットが 1 つ必要なようです。予約注文でツリーを印刷し、何かが欠けていないことを確認するために紙にツリーを描きました. 予約注文と私が描いた木は一致していますが、正しい文字を生成するために必要なビットがオフになっています.
public void decode(String code){
String result = "";
TreeNode current = root;
current.preOrder();
for(int i = 0;i < code.length();i++){
//left--0
if(Character.getNumericValue(code.charAt(i))==0){
if(current.getLeft() == null){
result += current.getWeight().getLetter();
current = root;
i--;
}else
current=current.getLeft();
}
//right--1
else if(Character.getNumericValue(code.charAt(i))==1){
if(current.getRight() == null){
result += current.getWeight().getLetter();
current = root;
i--;
}else
current=current.getRight();
}
}
System.out.println(result);
}
私のツリーは毎回正しく構築されているため、エラーはデコード方法にあると思われます。ただし、追加のビットが必要な理由がわかりません。