構建二叉樹我有格式化像這樣一個二叉樹文件:從文件
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類。
是的好評,謝謝。我知道這是不是問題,只有我的程序讀取/寫入文件。 – ceptno