0208. 实现 Trie (前缀树)

题目地址(208. 实现 Trie (前缀树))

https://leetcode-cn.com/problems/implement-trie-prefix-tree/

题目描述

实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。

示例:

Trie trie = new Trie();

trie.insert("apple");
trie.search("apple");   // 返回 true
trie.search("app");     // 返回 false
trie.startsWith("app"); // 返回 true
trie.insert("app");
trie.search("app");     // 返回 true
说明:

你可以假设所有的输入都是由小写字母 a-z 构成的。
保证所有输入均为非空字符串。

前置知识

公司

  • 阿里

  • 腾讯

  • 百度

  • 字节

思路

这是一道很直接的题目,上来就让你实现前缀树(字典树)。这算是基础数据结构中的 知识了,不清楚什么是字典树的可以查阅相关资料。

我们看到题目给出的使用方法new Trie, insert,searchstartWith.

为了区分searchstartWith我们需要增加一个标示来区分当前节点是否是某个单词的结尾。 因此节点的数据结构应该是:

每次 insert 我们其实都是从根节点出发,一个一个找到我们需要添加的节点,修改 children 的值.

我们应该修改哪一个 child 呢? 我们需要一个函数来计算索引

其实不管 insert, search 和 startWith 的逻辑都是差不多的,都是从 root 出发, 找到我们需要操作的 child, 然后进行相应操作(添加,修改,返回)。

208.implement-trie-prefix-tree-1

关键点解析

  • 前缀树

代码

相关题目

最后更新于

这有帮助吗?