当我发送一串要解码的位时,似乎需要一个额外的位才能正确解码。我已经预先打印出这棵树,我已经在纸上画了这棵树,以确保我没有遗漏任何东西。预购和我绘制的树匹配,但生成正确字母所需的位已关闭。
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);
}
我的树每次都正确构建,这让我相信错误出在解码方法中。但是,我似乎无法弄清楚为什么它需要额外的位。