public void Dispose() { RootNode.Dispose(); NodesCounter = 0; PqNodeSelector.Clear(); PqNodeSelector = null; NodesFrequency.Clear(); NodesFrequency = null; TreeNodes.Clear(); TreeNodes = null; TreePaths.Clear(); TreePaths = null; }
/** * build the tree */ private void InitSelection() { while (PqNodeSelector.Count > 1) { // get the minimum 2 node HuffmanNode rightNode = PqNodeSelector.Dequeue(); HuffmanNode leftNode = PqNodeSelector.Dequeue(); HuffmanNode parentNode = new HuffmanNode(-1, rightNode.Frequincy + leftNode.Frequincy, leftNode, rightNode); PqNodeSelector.Enqueue(parentNode); NodesCounter++; } // the final node is the root node RootNode = (HuffmanNode)PqNodeSelector.Dequeue(); }