Greedy Algorithms8 sections · 316 units
Open in Course

Huffman - Implementation

The code

function huffmanCoding(chars, freqs)
 heap := min-heap
 for i from 0 to length of chars - 1
 heap.push(new Node(chars[i], freqs[i]))
 while heap.size() > 1
 left := heap.pop()
 right := heap.pop()
 merged := new Node(null, left.freq + right.freq)
 merged.left := left
 merged.right := right
 heap.push(merged)
 root := heap.pop()
 // Traverse tree to get codes
 generateCodes(root, "")

Time: O(nlogn)O(n \log n). Space: O(n)O(n).