chap binary trees implement priority queue class based on the max-heap class implementation of figure the following methods should be supported for manipulating the priority queuevoid enqueue(int objectidint priority)int dequeue()void changeweight(int objectidint newpriority)method enqueue inserts new object into the priority queue with id number objectid and priority priority method dequeue removes the object with highest priority from the priority queue and returns its object id method changeweight changes the priority of the object with id number objectid to be newpriority the type for should be class that stores the object id and the priority for that object you will need mechanism for finding the position of the desired object within the heap use an arraystoring the object with objectid in position (be sure in your testing to keep the objectids within the array bounds you must also modify the heap implementation to store the object' position in the auxiliary array so that updates to objects in the heap can be updated as well in the array the huffman coding tree function buildhuff of figure manipulates sorted list this could result in th( algorithmbecause placing an intermediate huffman tree on the list could take th(ntime revise this algorithm to use priority queue based on min-heap instead of list complete the implementation of the huffman coding treebuilding on the code presented in section include function to compute and store in table the codes for each letterand functions to encode and decode messages this project can be further extended to support file compression to do so requires adding two steps( read through the input file to generate actual frequencies for all letters in the fileand ( store representation for the huffman tree at the beginning of the encoded output file to be used by the decoding function if you have trouble with devising such representationsee section