안녕하세요. 문자를 찾으려면 트리를 재귀 적으로 검색하고 해당 문자를 가져 오려면 이진 코드를 찾는 방법을 찾으려합니다. 기본적으로 목표는 캐릭터의 코드를 찾아서 파일에 쓰는 것입니다. 파일 작성자 부분은 아무런 문제가 없지만 실제 문제는 이진 코드를 문자열에 넣는 것입니다. 반면 문자 검색. 도와주세요! 반복적으로 트리를 검색하여 문자의 이진 코드를 얻습니다.
이
재귀 메서드에 대한 코드입니다 :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;
공용 클래스 주파수가 대등 { 개인 문자열의 구현; 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);
}
}