我正在制作霍夫曼程序,我在解码部分。我目前正在研究一个基于输入字符串创建树的函数,它创建一个h节点树并返回一个指针。制作新节点时的困难
#include <iostream>
#include <cstdlib>
using namespace std;
struct Hnode{
string data;
int count;
Hnode *left, *right;
Hnode(string data) : data(data), count(0), left(NULL), right(NULL) {}
Hnode() : data(""), count(0), left(NULL), right(NULL) {}
Hnode(Hnode *left, Hnode *right) : data(""), count(0), left(left), right(right) {}
Hnode * readTree(string &text)
{
if (text[0]=='L')
return new Hnode(text[1])
else {
string s = text.substr(1,text.size());
return new Hnode(readTree(s), readTree(s));
}
}
要简单介绍一下我写我的编码,所以我收到一个字符串,告诉我有什么哈夫曼树的样子。例如,我正在使用示例ILaILbILrILcLd。这意味着每当有一个空插座sorta时,L表示一个新叶,所以当你看到ILcLd时,你可以看到有两个叶(c和d)被攻击到一个空叶。
我收到错误,说没有与Hnode :: Hnode(char &)匹配的函数,这让我的脑海里有些微不足道,因为我没有在这个函数中做任何字符。
但你没有这样的构造函数...,返回新的Hnode(string(&text [1],1))... – neagoegab