我尝试实现Huffman
编码压缩算法。 Encode
函数对我有用,但是当我使用解码函数时,我没有给出正确的结果。我在文本文件中写入编码函数的输出并读取它以传递给解码函数,当我尝试与自己解决相同的问题时,结果与算法代码结果不同,有什么不对?
这是我的编码功能
public static void GenerateCode(Node parentNode, string code)
{
if (parentNode != null)
{
GenerateCode(parentNode.leftChild, code + "0");
if (parentNode.leftChild == null && parentNode.rightChild == null)
Console.WriteLine(parentNode.data + "{" + code + "}");
System.IO.File.AppendAllText("E:\\test.txt", code);
GenerateCode(parentNode.rightChild, code + "1");
}
}
这是解码函数
public static void DecodeData(Node parentNode, Node currentNode, int pointer, string input)
{
if (input.Length == pointer)
{
if (currentNode.leftChild == null && currentNode.rightChild == null)
{
Console.WriteLine(currentNode.data);
}
return;
}
else
{
if (currentNode.leftChild == null && currentNode.rightChild == null)
{
Console.WriteLine(currentNode.data);
DecodeData(parentNode, parentNode, pointer, input);
}
else
{
if (input.Substring(pointer, 1) == "0")
{
DecodeData(parentNode, currentNode.leftChild, ++pointer, input);
}
else
{
DecodeData(parentNode, currentNode.rightChild, ++pointer, input);
}
}
}
}
这是我对两个功能的要求
GenerateCode(parentNode1, "");
string contents = File.ReadAllText(@"E:\\test.txt");
DecodeData(parentNode1, parentNode1, 0, contents);