Trie 中没有名为 children 的成员的运行时错误,即使在 Trie 中明确定义了 children class
Runtime Error of no member named children in Trie ,even though children is clearly defined in Trie class
嗨,我是 C++ 的初学者,正在尝试实现基本的 trie 结构。请有人帮忙。任何反馈都是welcome.I'''' getting a runtime error of
Line 15: Char 25: error: no member named 'children' in 'Trie'
if(present->children[word[i]-'a']==NULL)
过去两天我一直在努力解决这个问题。还是不知道。
class Trie {
public:
/** Initialize your data structure here. */
Trie() {
string val="";
Trie* children[26];
bool flag=false;
}
Trie* root=new Trie();
/** Inserts a word into the trie. */
void insert(string word) {
Trie* present=root;
for(int i=0;i<word.size();i++)
{
if(present->children[word[i]-'a']==NULL)
{
Trie* p=new Trie();
p->val=present->val+word[i];
present->children[word[i]-'a']=p;
present=p;
}
else
present=present->children[word[i]-'a'];
w}
present->flag=true;
}
/** Returns if the word is in the trie. */
bool search(string word) {
Trie* present=root;
for(int i=0;i<word.size();i++)
{
if(present->children[word[i]-'a']==NULL)
return false;
else
present=present->children[word[i]-'a'];
}
return true;
}
/** Returns if there is any word in the trie that starts with the given prefix. */
bool startsWith(string prefix) {
Trie* present=root;
for(int i=0;i<word.size();i++)
{
if(present->children[word[i]-'a']==NULL)
return false;
else
present=present->children[word[i]-'a'];
}
for(int i=0;i<26;i++)
{
if(present->children[i]!=NULL)
return true;
}
return false;
}
};
/**
* Your Trie object will be instantiated and called as such:
* Trie* obj = new Trie();
* obj->insert(word);
* bool param_2 = obj->search(word);
* bool param_3 = obj->startsWith(prefix);
*/
在这个构造函数中
Trie() {
string val="";
Trie* children[26];
bool flag=false;
}
您创建了一个本地数组 children
,该数组在构造函数外将不存在且不可见。
class只有一个数据成员
Trie* root=new Trie();
可以在 class.
的成员函数内部访问
您需要设计一个数据结构来表示 trie 的一个节点,然后数据结构 trie 本身将包含一个或多个指向表示节点的数据结构的指针。
嗨,我是 C++ 的初学者,正在尝试实现基本的 trie 结构。请有人帮忙。任何反馈都是welcome.I'''' getting a runtime error of
Line 15: Char 25: error: no member named 'children' in 'Trie'
if(present->children[word[i]-'a']==NULL)
过去两天我一直在努力解决这个问题。还是不知道。
class Trie {
public:
/** Initialize your data structure here. */
Trie() {
string val="";
Trie* children[26];
bool flag=false;
}
Trie* root=new Trie();
/** Inserts a word into the trie. */
void insert(string word) {
Trie* present=root;
for(int i=0;i<word.size();i++)
{
if(present->children[word[i]-'a']==NULL)
{
Trie* p=new Trie();
p->val=present->val+word[i];
present->children[word[i]-'a']=p;
present=p;
}
else
present=present->children[word[i]-'a'];
w}
present->flag=true;
}
/** Returns if the word is in the trie. */
bool search(string word) {
Trie* present=root;
for(int i=0;i<word.size();i++)
{
if(present->children[word[i]-'a']==NULL)
return false;
else
present=present->children[word[i]-'a'];
}
return true;
}
/** Returns if there is any word in the trie that starts with the given prefix. */
bool startsWith(string prefix) {
Trie* present=root;
for(int i=0;i<word.size();i++)
{
if(present->children[word[i]-'a']==NULL)
return false;
else
present=present->children[word[i]-'a'];
}
for(int i=0;i<26;i++)
{
if(present->children[i]!=NULL)
return true;
}
return false;
}
};
/**
* Your Trie object will be instantiated and called as such:
* Trie* obj = new Trie();
* obj->insert(word);
* bool param_2 = obj->search(word);
* bool param_3 = obj->startsWith(prefix);
*/
在这个构造函数中
Trie() {
string val="";
Trie* children[26];
bool flag=false;
}
您创建了一个本地数组 children
,该数组在构造函数外将不存在且不可见。
class只有一个数据成员
Trie* root=new Trie();
可以在 class.
的成员函数内部访问您需要设计一个数据结构来表示 trie 的一个节点,然后数据结构 trie 本身将包含一个或多个指向表示节点的数据结构的指针。