//entering values in map inside nodes and arranging those nodes in Priority queue with smallest frequencies in front PQueue.PriorityQueue nodesinQueue(Dictionary <char, int> Dic) { PQueue.cNode node = new PQueue.cNode(); //node created PQueue.PriorityQueue pQueue = new PQueue.PriorityQueue(); //queue created foreach (KeyValuePair <char, int> kvp in Dic) //reading from frequency dictionary { node.value = kvp.Key; node.frequency = kvp.Value; //setting the values of node pQueue.insertWithPriority(node); //entering the node node = new PQueue.cNode(); } return(pQueue); }
//building the tree PQueue.cNode HuffmanEncoding(PQueue.PriorityQueue pQueue) { int n = pQueue.count; while (n != 1) { PQueue.cNode node = new PQueue.cNode(); node.leftZero = pQueue.remove(); node.rightOne = pQueue.remove(); node.frequency = node.leftZero.frequency + node.rightOne.frequency; node.value = 'a'; pQueue.insertWithPriority(node); pQueue.print(); Console.WriteLine("Inserted"); n = pQueue.count; } return(pQueue.Top()); }