Я немного озадачен тем, как построить дерево Хаффмана из сканирования по предварительному заказу. Я закодировал свой заголовок так, как это было объяснено здесь
Но я не совсем уверен, как читать сканы и строить дерево, мое сканирование выглядит так
01a001c1b001f1e1d # (хэштег для выхода из цикла)
Это моя попытка построить дерево, хотя оно не совсем верно
HuffmanNode rootTest=new HuffmanNode((byte)preOrderString.charAt(0));
Stack<HuffmanNode> s = new Stack<HuffmanNode>();
HuffmanNode current=rootTest;
root=current;
s.push(current);
for(int i=1;i<preOrderString.length();i++) {
if(preOrderString.charAt(i)=='0') {
HuffmanNode next=new HuffmanNode((byte)preOrderString.charAt(i));
if(current.left==null)
current.left=next;
else
current.right=next;
current=next;
System.out.println(current);
s.push(current);
}
if(preOrderString.charAt(i)=='1') {
i++;
if(current.left==null) {
current.left=new HuffmanNode((byte)preOrderString.charAt(i));
System.out.println("left "+current.left);
}
else if(current.right==null){
current.right=new HuffmanNode((byte)preOrderString.charAt(i));
System.out.println("right "+current.right);
}
while(!s.isEmpty()) {
current=s.pop();
}
}
}