霍夫曼的算法树打印

时间:2016-05-14 12:30:20

标签: java arraylist huffman-code

我制作了一个模拟Huffman Algorithm的程序。到目前为止,我处于问题的中间,因为我的教授想要打印树,这将使左节点与右节点区分开来。这是我的代码,顺便说一下我使用arrayList来制作这个程序。有什么方法可以用正确的方式打印出来吗?

    String inputtedText = jTextArea1.getText();
    HashMap<Character, Integer> map = new HashMap<>();
    for (char ch : inputtedText.toCharArray()) {
        if (map.containsKey(ch)) {
            int val = map.get(ch);
            map.put(ch, val + 1);
        } else {
            map.put(ch, 1);
        }
    }

    jTextArea2.append("                       Symbol                Weight \n");
    jTextArea2.append("-------------------------------------------------------------\n");
    map.keySet().stream().forEach((key) -> {
        jTextArea2.append("\t"+key + " \t"+ map.get(key)+ "\n");
    });

    List<Integer> list = new ArrayList();
    list.addAll(map.values());
    Collections.sort(list);
    jTextArea2.append("\n Sorted Values: "+ list );

    do {

        String listStr = list.toString();
        finalOutput.add(listStr);

        list.add(list.get(0) + list.get(1));
        list.remove(0);
        list.remove(0);
        Collections.sort(list); 
    } while (list.size() != 1);

    finalOutput.add("[" + list.get(0)+"]");

    Collections.reverse(finalOutput);
    for(int i = 0; i<finalOutput.size(); i++){
        jTextArea4.append(finalOutput.get(i) +"\n");
    }
    jTextField2.setText(Integer.toString(list.get(0)));

这是输入文本&#34; Hello World的输出。&#34;

  

[12] [5,7] [3,4,5] [2,3,3,4] [2,2,3,3] [1,2,2,2,3,3] ]   [1,1,1,2,2,2,3] [1,1,1,1,1,2,2,3] [1,1,1,1,1,1,1,1,1,1   2,3]

0 个答案:

没有答案