霍夫曼解码功能

时间:2014-08-15 14:08:40

标签: c# compression huffman-code

我尝试实现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); 

0 个答案:

没有答案