こんにちは私は文字を見つけるためにツリーを再帰的に検索する方法とその文字に到達するためのバイナリコードを理解しようとしています。基本的に目標は、キャラクターのコードを見つけてファイルに書き込むことです。ファイルライターの部分は問題ありませんが、本当の問題はバイナリコードを文字列に入れることです。キャラクターを探している間。助けてください!
これは再帰的メソッドのコードです:
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;
}
これはFrequencyクラスです。
package huffman;
publicclassFrequencyはComparable{privateStrings;を実装します。private int n; パブリック周波数が残っています。公的周波数権; プライベート文字列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);
}
}