From 4e0e1deb49969ffb076114da8d72d6bd05615d36 Mon Sep 17 00:00:00 2001 From: Sayyed Nabeel Ahmad <94233521+sayyed-nabeel@users.noreply.github.com> Date: Thu, 22 Sep 2022 11:09:03 +0530 Subject: [PATCH] Huffman Coding using greedy algorithm. --- Huffman Coding/Output.png | Bin 0 -> 28860 bytes Huffman Coding/huffman.js | 113 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 Huffman Coding/Output.png create mode 100644 Huffman Coding/huffman.js diff --git a/Huffman Coding/Output.png b/Huffman Coding/Output.png new file mode 100644 index 0000000000000000000000000000000000000000..17812734bf6090f1ca62f824680e2f1b1ec90724 GIT binary patch literal 28860 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

`ZMOOs%abulv>0w{~<8 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"); + + return; + } + + // if we go to left then add "0" to the code. + // if we go to the right add"1" to the code. + + // recursive calls for left and + // right sub-tree of the generated tree. + printCode(root.left, s + "0"); + printCode(root.right, s + "1"); + } + +// main function +// number of characters. + let n = 6; + let charArray = [ 'a', 'b', 'c', 'd', 'e', 'f' ]; + let charfreq = [ 5, 9, 12, 13, 16, 45 ]; + + // creating a priority queue q. + // makes a min-priority queue(min-heap). + let q = []; + + for (let i = 0; i < n; i++) { + + // creating a Huffman node object + // and add it to the priority queue. + let hn = new HuffmanNode(); + + hn.c = charArray[i]; + hn.data = charfreq[i]; + + hn.left = null; + hn.right = null; + + // add functions adds + // the huffman node to the queue. + q.push(hn); + } + + // create a root node + let root = null; + q.sort(function(a,b){return a.data-b.data;}); + + // Here we will extract the two minimum value + // from the heap each time until + // its size reduces to 1, extract until + // all the nodes are extracted. + while (q.length > 1) { + + // first min extract. + let x = q[0]; + q.shift(); + + // second min extract. + let y = q[0]; + q.shift(); + + // new node f which is equal + let f = new HuffmanNode(); + + // to the sum of the frequency of the two nodes + // assigning values to the f node. + f.data = x.data + y.data; + f.c = '-'; + + // first extracted node as left child. + f.left = x; + + // second extracted node as the right child. + f.right = y; + + // marking the f node as the root node. + root = f; + + // add this node to the priority-queue. + q.push(f); + q.sort(function(a,b){return a.data-b.data;}); + } + + // print the codes by traversing the tree + printCode(root, ""); + +// This code is contributed by avanitrachhadiya2155 +