Sto cercando di capire cosa fare con il mio problema dei compiti a casa. Sto cercando di creare un albero di Huffman che codifichi e decodifichi i messaggi in Java. Mi vengono dati stringhe e frequenza.Huffman Tree con una determinata frequenza Confonde come iniziare? Java
[a=10, b=15, c=12, e=3, nl=4, sp=13, t=1].
So che con Huffman albero si prendono le due frequenze più basse e trasformarli in un albero con la somma della loro frequenza, come il genitore. Capisco che usando una coda di priorità posso inserire tutta la frequenza e usare il metodo remove()
per eliminare la 2 frequenza minima. Quindi aggiungili insieme per ottenere il Peso di entrambi, quindi inserisci di nuovo il Peso nella Coda e ripeti.
La finale albero dovrebbe tenere peso di
[58=root, root.left = 33, root.right = 25]
[33.left = 18, 18.left = 8, 8.left = 4]
non sono sicuro esattamente come iniziare anche per implementare un codice di Huffman albero che sarà in grado di creare l'albero con la frequenza e visualizzare l'albero. Ho dato un'occhiata ad altri codici e sembra che tutti stiano creando da Streaming Input Code o giù di lì.
Qualsiasi aiuto sarebbe bello per farmi andare. Grazie in anticipo!
Sono supponiamo di stampare con un formato simile a: (pre-ordine di attraversamento)
58
- 33
- - 18
- - - 8
- - - - 4
- - - - - 1:t
- - - - - 3:e
- - - - 4:nl
- - - 10:a
- - 15:b
- 25
- - 12:c
- - 13:sp
Grazie. Un errore che fa è che stampa una foglia che non dovrebbe ancora avere. È il 10: a che viene stampato che dovrebbe essere stampato dopo il 4: nl. – JavaStudent