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: . Space: .