Я пытаюсь создать класс TrieNode. Каждый узел имеет букву, ссылки (другие узлы, к которым она подключается), логическое объявление, если этот узел отмечает конец полного слова, и я пытаюсь добавить еще одну булевую посмертную погоду, это часть действительного префикса. Часть, с которой я столкнулся, - это префиксная часть. Я пытаюсь сделать метод isValidPrefix.Попытка реализовать структуру данных trie в java
Моего TrieNode класс:
class TrieNode
{
char letter;
TrieNode[] links;
boolean fullWord;
boolean validPrefix;
TrieNode(char letter)
{
this.letter = letter;
links = new TrieNode[26];
for(int i=0;i<26;i++){//i keep getting a nullPointer exception
this.links[i].validPrefix=false;
}
this.fullWord = false;
this.validPrefix=true;
}
}
В моем методе надстройки, каждый раз, когда я добавить узел, я установил, что узлы validPrefix
истину.
Мой метод действует префикс:
public boolean isValidPrefix(TrieNode root, String word) {
int length = word.length();
char[] letters = word.toCharArray();
TrieNode curNode = root;
for (int i = 0; i < length; i++){
curNode = curNode.links[letters[i]-97];
}
return curNode.validPrefix;//get a nullPointerException
}
Вот мой метод добавить для справки
public void insertWord(TrieNode root, String word){//97 is ascii value
int length = word.length();
char[] letters = word.toCharArray();
TrieNode curNode = root;
for (int i = 0; i < length; i++){
if (curNode.links[letters[i]-97] == null)
curNode.links[letters[i]-97] = new TrieNode(letters[i]);
curNode = curNode.links[letters[i]-97];
curNode.validPrefix=true;
}
curNode.fullWord = true;
}
я пробовал раньше, и до сих пор есть исключения нулевого указателя в IsValid метод –
Я не думаю, что вы будете получить NLPE после предварительно инициализирующих ссылок и validPrefix. Не могли бы вы вставить мне строку? –
Исключение в потоке «основного» java.lang.NullPointerException \t в PrefixTree.isValidPrefix (PrefixTree.java:84) (линия 84 находится в методе isValidPrefix, возвращение заявления в нижней части) –