java - 尝试用java实现trie数据结构

标签 java data-structures trie

我正在尝试创建一个 TrieNode 类。每个节点都有一个字母、链接(它连接到的其他节点)、一个 boolean 值,声明该节点是否标记一个完整单词的结尾,我试图添加另一个 boolean 值,说明它是否是有效前缀的一部分。我遇到问题的部分是前缀部分。我正在尝试创建一个 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[] 链接用 new TrieNode[26] 实例化;但那 26 个未分配有效对象。
下面这个怎么样?

for(int i=0;i<26;i++){
         TrieNode obj = new TrieNode();
                  obj.validPrefix=false;
        this.links[i] = obj;
    }

关于java - 尝试用java实现trie数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503643/

相关文章:

javascript - 从 JavaScript 更新的 html 读取数据

java - 无法将类导入到 Java 项目

java - 获取调用方法的注解值

java - jOOQ - 多重绑定(bind)

python - 如何比较两个复杂的数据结构?

database - 索引数据输入的替代方案 1

java - "Simple"Trie实现

java - 在 Java 中实现基本的自动完成

java - 数组IntList(java)

java - 使用 asp.net web api 的 Android 库