Функция кодирования дерева Хаффмана не проходит через дерево правильно - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь написать функцию кодирования дерева Хаффмана, используя рекурсивный помощник, но помощник не пересекает дерево, кроме первого символа в inputText.

public String encode(String inputText) {    

    String s1 = "";
    String s2 = "";

    if (inputText.length() == 0) {
        throw new IllegalArgumentException();
    }

    //Store each path as a string 
    String path = "";

    for (int i = 0; inputText.length() > i; i++) {
        //Initial for loop to go through each character in the inputText
        char target = inputText.charAt(i);
        String temp = encode_helper(root, target, "");
        path += temp;

        }

    return path;

}

Вспомогательная функция

public String encode_helper (корень узла, цель символа, путь строки) {

    String s1 = "";
    String s2 = "";

    if(root instanceof LeafNode) {

        LeafNode temp = (LeafNode)root;
        if(temp.data == target) {
            return path;

        }else {
            return null;
        }

    }else {
        InternalNode temp = (InternalNode)root;
        s1 = encode_helper(temp.left, target, path +"0");
        s2 = encode_helper(temp.right, target, path +"1");

    }
    if (s1 != null) {
        return s1;
    }
    if (s2 != null) {
        return s2;
    }
    return path;
}
...