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);
}
我的樹每次都正確構建,這讓我相信錯誤在解碼方法中。但是,我似乎無法弄清楚爲什麼需要額外的位。
非常感謝! – user1303995