# 第 2 节 Trie 的添加与查询

# Trie 的添加操作

基本思想:从上到下,先查询,如果没有就添加。

参考代码

public void add(String word) {
    // root 是当前 Trie 对象的属性
    Node currNode = root;
    for (int i = 0; i < word.length(); i++) {
        Character c = word.charAt(i);
        if (currNode.next.get(c) == null) {
            currNode.next.put(c, new Node());
        }
        currNode = currNode.next.get(c);
    }
    // 如果已经添加过,才将 size++
    if (!currNode.isWord) {
        currNode.isWord = true;
        size++;
    }
}

# Trie 的查询操作

理解:Trie 的查询只与 待查询的字符串的长度 有关。

下面这个方法查询整个单词在 Trie 中是否存在,所以在路径匹配完成以后,一定不要忘了判断匹配到的那个结点的 isWord 属性,如果它是一个单词的结尾,才返回 True

参考代码

public boolean contains(String word){
    Node currNode = root;
    Character currC;
    for (int i = 0; i < word.length(); i++) {
        currC = word.charAt(i);
        if (currNode.next.get(currC) == null) {
            return false;
        }
        currNode = currNode.next.get(currC);
    }
    return currNode.isWord;
}

作者:liweiwei1419 链接:https://suanfa8.com/trie/add-and-search 来源:算法吧 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Last Updated: 11/19/2024, 7:27:48 AM