Huffman Code (cont)
Huffman's algorithm using priority queue:
HuffmanCode(T):
| Input string T of size n
| Output optimal encoding tree for T
|
| compute frequency array
| Q=new priority queue
| for all characters c do
| | T=new single-node tree storing c
| | join(Q,T) with frequency(c) as key
| end for
| while |Q|≥2 do
| | f1=Q.minKey(), T1=leave(Q)
| | f2=Q.minKey(), T2=leave(Q)
| | T=new tree node with subtrees T1 and T2
| | join(Q,T) with f1+f2 as key
| end while
| return leave(Q)
|
|