我正在编写一个huffcode程序,并且正在遍历树的每个分支以查找每个字母的代码。如何传递字符串以将其插入?另外,我从声明字符串向量的方式中出错,但是我在代码中都使用了向量。我在做错什么吗?
void treeTraverser(Node* root, char string, vector<char> const &alpha,
vector<string> const &huffcode){
if(root->left!=NULL){
string=string+'0';
treeTraverser(root->left, string, alpha, huffcode);
}
if(root->right!=NULL){
string=string+'1';
treeTraverser(root->right, string, alpha, huffcode);
}
alpha.push_back(root->key);
huffcode.push_back(string);
}
答案 0 :(得分:0)
在您的char
参数中将string&
更改为string
(并考虑重命名)。
此外,摆脱const
参数上的huffcode
。您无法push_back()
进入const vector
对象。
void treeTraverser(Node* root, string &str, vector<char> const &alpha, vector<string> &huffcode)
{
if (root->left){
str += '0';
treeTraverser(root->left, str, alpha, huffcode);
}
if (root->right){
str += '1';
treeTraverser(root->right, str, alpha, huffcode);
}
alpha.push_back(root->key);
huffcode.push_back(str);
}