[英]Trying to implement a trie data structure in java
我正在嘗試制作一個TrieNode類。 每個節點都有一個字母,鏈接(它連接到的其他節點),一個布爾值,聲明該節點是否標記一個完整單詞的結尾,我正嘗試添加另一個布爾值,說它是有效前綴的一部分。 我遇到麻煩的部分是前綴部分。 我試圖做一個isValidPrefix方法。
我的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;
}
}
在我的add方法中,每次添加節點時,都會將該節點的validPrefix
設置為true。
我的有效前綴方法:
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;
}
根TrieNode []鏈接用新的TrieNode [26]實例化; 但是那些26沒有分配有效的對象。
下面呢?
for(int i=0;i<26;i++){
TrieNode obj = new TrieNode();
obj.validPrefix=false;
this.links[i] = obj;
}
我想通了,我只是檢查節點是否為空:
public static boolean isValidPrefix(TrieNode root, String word){
int length = word.length();
char[] letters = word.toCharArray();
for (int i = 0; i < length; i++){
root = root.links[letters[i]-97];
}
if(root==null)
return false;
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.