51 lines
1.2 KiB
Java
51 lines
1.2 KiB
Java
import java.util.*;
|
|
|
|
|
|
public class HuffmanTree{
|
|
|
|
|
|
private HuffmanNode root;
|
|
|
|
|
|
|
|
public HuffmanTree(){
|
|
// constructeur : création des feuilles , puis après de l'abre !
|
|
|
|
|
|
/*
|
|
utilisation de PriorityQueue<E> pour gérer selon la fréquence !!
|
|
|
|
|
|
root sera donc la racine de l'arbre
|
|
création des branches avec les plus petites fréquence :
|
|
|
|
Etape de construction suggérer :
|
|
|
|
1 - faire une boucle sur le tableau des fréquences , puis ajouter chaque fréquence > 0 comme un nouveau noeud dans la pile puis empiler
|
|
|
|
2- depiler les deux premieres valeurs pour former les branches jusqu'à ce que la pile ne contient un seul elément
|
|
|
|
3 - cet élément sera la racine de l'abre
|
|
|
|
|
|
*/
|
|
}
|
|
|
|
public Map<Integer,String> generateCodes(){
|
|
// methode recursive : appliquer à chaque branche de l'abre , chaque feuille !!!
|
|
// 1 - trouver cas de base + comment generer les codes :
|
|
|
|
/*
|
|
il nous faut differencier plusieurs cas si c'est la racine de l'abre
|
|
et surtout si on met zero ou 1 selon si le fils droit ou gauche
|
|
|
|
*/
|
|
// le type des clés et valeurs sont susceptibles de changer :
|
|
Map<Integer,String> dictionnaire = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
return dictionnaire;
|
|
}
|
|
} |