Я пытаюсь написать функцию кодирования дерева Хаффмана, используя рекурсивный помощник, но помощник не пересекает дерево, кроме первого символа в 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;
}