prog.java:16: error: cannot find symbol
Trie node = curr.child.get(c);
^
symbol: variable child
location: variable curr of type Trie
我在下面提到的代码中遇到了上面提到的错误,我曾经在Trie数据结构的实现中插入一个元素。
import java.util.*;
class Trie {
/** Initialize your data structure here. */
public Trie() {
Map<Character,Trie> child = new HashMap<>();
boolean end;
}
/** Inserts a word into the trie. */
public void insert(String word) {
Trie curr = this;
for(int i=0;i<word.length();i++){
char c = word.charAt(i);
Trie node = curr.child.get(c);
if(node == null){
node = new Trie();
curr.child.put(c,node);
}
curr = node;
}
curr.end = true;
}
}
// Your Trie object will be instantiated and called as such:
class Main{
public static void main(String[] args){
Trie obj = new Trie();
String word = "ABCD";
obj.insert(word);
}
}
如何解决此错误...?
child
未定义为Trie
类的属性,因此您无法通过child
访问curr.child
,您要做的就是在构造函数外部定义属性。 (您必须对end
做同样的事情)
这应该有效
class Trie {
Map<Character,Trie> child ;
boolean end;
/** Initialize your data structure here. */
public Trie() {
child = new HashMap<>();
}
/** Inserts a word into the trie. */
public void insert(String word) {
Trie curr = this;
for(int i=0;i<word.length();i++){
char c = word.charAt(i);
Trie node = curr.child.get(c);
if(node == null){
node = new Trie();
curr.child.put(c,node);
}
curr = node;
}
curr.end = true;
}
}
按如下所示将变量从构造函数移动到类,以便可以在所有方法中使用它们。当前,它们的范围仅限于构造函数。
Map<Character, Trie> child = new HashMap<>();
boolean end;
public Trie() {
}