Как построить Huffman Tree из предварительного заказа сканирования? - PullRequest
0 голосов
/ 12 ноября 2018

Я немного озадачен тем, как построить дерево Хаффмана из сканирования по предварительному заказу. Я закодировал свой заголовок так, как это было объяснено здесь

Но я не совсем уверен, как читать сканы и строить дерево, мое сканирование выглядит так

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();
            }
        }   
    } 
...