我有一个格式如下的二叉树文件:
121
00
99
010
120
011
97
10
98
11
它的格式类似于(ascii val)而不是(遍历代码)。0 = 左一,1 = 右一
所以 ascii 值 121 将存储在树中,如:
-1
/
-1 ...
/
121
我该如何正确构建它?
这就是我目前的做法:
TreeNode root;
public Tree(Scanner input){
while(input.hasNextLine()){
int ascii = Integer(input.nextLine());
String code = input.nextLine();
root = insert(root, ascii, code);
}
}
public TreeNode insert(TreeNode node, int ascii, String code){
if(code == ""){
return new TreeNode(ascii); //treenode is just data, left right
}
if(node == null)
node = new TreeNode(-1);
char c = code.charAt(0);
if(c == '0')
node.left = insert(node.left, ascii, code.substring(1));
else if(c == '1')
node.right = insert(node.right, ascii, code.substring(1));
return node;
}
我做了一个预购打印,它看起来是正确的,但是当我尝试解码一个霍夫曼编码的文件时它做错了。你有什么不对劲的地方吗?我可以发布我的解码内容,但这有点棘手,因为我使用的是一个太大的自定义 BitInputStream 类,无法在此处发布。