【Trie】LeetCode 208. 实现 Trie (前缀树)

题目链接

208. 实现 Trie (前缀树)

思路

字典树与多叉树非常类似,但是它本身结点不存储值

什么意思呢?

多叉树结点一般是这样的:

class Tree{
    int value;
    Tree[] next;
}

而字典树的结点一般是这样的:

class Trie{
    boolean isEnd;
    Trie[] next = new Trie[26];
}

next 数组实际是一个字母映射表,通过这个表来查找字符。

举个例子,比如说要存储字符串 "lee"

代码

class Trie {
    // current node is end node
    boolean isEnd;
    // Letters mapping table
    Trie[] next;

    public Trie() {
        this.isEnd = false;
        this.next = new Trie[26];
    }

    public void insert(String word) {
        Trie node = this;
        for(char c : word.toCharArray()){
            if(node.next[c - 'a'] == null){
                node.next[c - 'a'] = new Trie();
            }
            node = node.next[c - 'a'];
        }
        node.isEnd = true;
    }

    public boolean search(String word) {
        Trie node = this;
        for(char c : word.toCharArray()){
            node = node.next[c - 'a'];
            if(node == null){
                return false;
            }
        }

        return node.isEnd;
    }

    public boolean startsWith(String prefix) {
        Trie node = this;
        for(char c : prefix.toCharArray()){
            node = node.next[c - 'a'];
            if(node == null){
                return false;
            }
        }

        return true;
    }
}
posted @   Frodo1124  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示