Huffman coding is a lossless data compression algorithm.
Consider the string ABRACADABRA.
Input characters are only present in the leaves. Internal nodes have a character value of ϕ (NULL). We can determine that our values for characters are:
A - 0
B - 111
C - 1100
D - 1101
R - 10
Our Huffman encoded string is:
A B R A C A D A B R A
0 111 10 0 1100 0 1101 0 111 10 0
or
01111001100011010111100
Huffman Decoding
voiddecode_huff(node*root,string s){ string res ="";int n =s.length();int i =0;while (i < n) { node *t = root; queue<node *> q;q.push(t);while (!q.empty()) { t =q.front();q.pop();if (!t->left &&!t->right) { res +=t->data;break; }if (s[i] =='0') {q.push(t->left); }elseif (s[i] =='1') {q.push(t->right); } i++; } } cout << res;}