Ejemplo n.º 1
0
        public Dictionary <char, string> TraverseQueueForGainingLeafs()
        {
            HuffmanCodeBuilder.Clear();
            Leafs.Clear();
            HuffmanNode root = PriorityQueue[0];

            TraverseInOrder(root);
            return(Leafs);
        }
Ejemplo n.º 2
0
        private void TraverseInOrder(HuffmanNode node)
        {
            if (node.LeftNode != null)
            {
                HuffmanCodeBuilder.Append('0');
                TraverseInOrder(node.LeftNode);
            }

            if (node.Symbol != HuffmanNode.DEFAULT_SYMBOL)
            {
                Leafs.Add(node.Symbol, HuffmanCodeBuilder.ToString());
            }

            if (node.RightNode != null)
            {
                HuffmanCodeBuilder.Append('1');
                TraverseInOrder(node.RightNode);
            }

            if (node != GetRoot())
            {
                HuffmanCodeBuilder.Remove(HuffmanCodeBuilder.Length - 1, 1);
            }
        }