Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static Kahendpuu huffman(Hashtable<Character, Double> sagedustabel){
- // Antud: sümbolite esinemissageduste tabel
- // Tulemus: konstrueeritakse ja tagastatakse vastav Huffmani koodipuu
- //KahendkuhiTp Q = new KahendkuhiTp(); // front (veel vaatlemata tipud)
- //ArrayDeque<Tipp> Q = new ArrayDeque<>(); // Kõige väiksemad on esimesed
- ArrayList<Tipp> Q = new ArrayList<>();
- // NB! Fronti Q peetakse tippude pöörd-kahendkuhjana!
- // teha frondi tipud ja vastav isoleeritud tippudega graaf g:
- Graaf g = new Graaf();
- for (char c : sagedustabel.keySet()){
- Tipp t = new Tipp("" + (int)c); // tipu märgendiks sümboli c arvkood
- double f = sagedustabel.get(c);
- t.seadaVäli("f", "" + f); // väljale f selle sümboli sagedus
- g.lisada(t); // panna graafi
- }//for
- while(Q.size() > 1){ // Õpik, joonis 5.6
- int index = leiaVäikseim(Q);
- Tipp uusTipp = new Tipp();
- Tipp tipp1 = Q.remove(index);
- Tipp tipp2 = Q.remove(index);
- uusTipp.seadaVäli("f", "" + (Double.parseDouble(tipp1.väli("f")) +
- Double.parseDouble(tipp2.väli("f"))));
- Q.add(uusTipp);
- }//while
- Tipp juur = Q.get(0); // ainus fronti jäänud tipp
- g.esikohale(juur); // paigutada esikohale (saab kahendpuu juurtipuks)
- return new Kahendpuu(g); // graaf g kahendpuuna
- }//huffman
Add Comment
Please, Sign In to add comment