0. Determine the count of each symbol in the input message.
1. Create a forest of single-node trees. Each node in the initial forest represents a symbol from the set of possible symbols, and contains the count of that symbol in the message to be coded. Symbols with a count of zero are ignored (consider them to be impossible).
2. Loop while there is more than 1 tree in the forest:
2a. Remove the two trees from the forest that have the lowest count contained in their roots.
2b. Create a new node that will be the root of a new tree. This new tree will have those two trees just removed in step 2a as left and right subtrees. The count in the root of this new tree will be the sum of the counts in the roots of its subtrees. Label the edge from this new root to its left subtree “1”, and label the edge to its right subtree “0”.
2c. Insert this new tree in the forest, and go to 2.
3. Return the one tree in the forest as the Huffman code tree.