Привет, я пытаюсь выяснить, как рекурсивно искать дерево, чтобы найти символ и двоичный код, чтобы добраться до этого символа. в основном цель состоит в том, чтобы найти код для символа, а затем записать его в файл. часть файлового автозапуска я не создаю проблем, но реальная проблема заключается в том, чтобы вставить двоичный код в строку. в то время как im ищет символ. пожалуйста помоги!Рекурсивно искать дерево, чтобы получить двоичное кодирование для символа
это код для рекурсивного метода:
public String biNum(Frequency root, String temp, String letter)
{
//String temp = "";
boolean wentLeft = false;
if(root.getString() == null && !wentLeft)
{
if(root.left.getString() == null)
{
temp = temp + "0";
return biNum(root.left, temp, letter);
}
if(root.left.getString().equals(letter))
{
return temp = temp + "0";
}
else
{
wentLeft = true;
temp = temp.substring(0, temp.length() - 1);
return temp;
}
}
if(root.getString() == null && wentLeft)
{
if(root.right.getString() == null)
{
temp = temp + "1";
return (biNum(root.right, temp, letter));
}
if(root.right.getString().equals(letter))
{
return temp = temp + "1";
}
else
{
wentLeft = false;
temp = temp.substring(0, temp.length() - 1);
return temp;
}
}
return temp;
}
и это класс Частоты:
package huffman;
Frequency общественного класса реализует Сопоставимые { частная строка s; private int n; Публичная частота слева; общественное право частоты; private String biNum; приватный строп лист;
Frequency(String s, int n, String biNum)
{
this.s = s;
this.n = n;
this.biNum = biNum;
}
public String getString()
{
return s;
}
public int getFreq()
{
return n;
}
public void setFreq(int n)
{
this.n = n;
}
public String getLeaf()
{
return leaf;
}
public void setLeaf()
{
this.leaf = "leaf";
}
@Override
public int compareTo(Object arg0) {
Frequency other = (Frequency)arg0;
return n < other.n ? -1 : (n == other.n ? 0 : 1);
}
}