Salut im essayant de comprendre comment rechercher récursivement un arbre pour trouver un caractère et le code binaire pour arriver à ce caractère. Fondamentalement, le but est d'aller chercher le code du personnage, puis de l'écrire dans un fichier. la partie de l'auteur de fichier que je peux ne faire aucun problème mais le vrai problème met le code binaire dans une chaîne. pendant que je cherche le personnage. aidez s'il vous plaît!Recherche récursive d'un arbre pour obtenir le codage binaire d'un caractère
c'est le code de la méthode récursive:
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;
}
et c'est la classe de fréquence:
package huffman;
public class Fréquence implémente Comparable {private String s; private int n; public Fréquence restante; public Droit de fréquence; private Chaîne biNum; private Feuille de chaîne;
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);
}
}