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