public Dictionary <char, string> TraverseQueueForGainingLeafs() { HuffmanCodeBuilder.Clear(); Leafs.Clear(); HuffmanNode root = PriorityQueue[0]; TraverseInOrder(root); return(Leafs); }
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); } }