호프만 프로그램을 만들고 있는데 디코딩 부분에 있습니다. 현재 입력 문자열을 기반으로 트리를 만들고 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 예제를 사용하고 있습니다. 즉, 내가있을 때마다 빈 소켓 정렬이 있고 L은 새 잎을 의미하므로 ILcLd를 볼 때 빈 칸에 두 개의 리프 (c 및 d)가 있음을 알 수 있습니다.
Hnode :: Hnode (char &)와 일치하는 함수가 없다는 오류가 발생합니다.이 함수에서 아무런 문자도 만들지 않으므로 내 마음이 조금 비뚤어집니다.
하지만 생성자가 없습니다 ... 새 Hnode (string (& text [1], 1))를 반환하십시오 ... – neagoegab