Trie
Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie树的基本性质可以归纳为:
(1)根节点不包含字符,除根节点之外每个节点只包含一个字符。
(2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。
(3)每个节点的所有子节点包含的字符串不相同。
实现一个 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 构成的。
- 保证所有输入均为非空字符串。
题解:比较简单的做法是每个节点都设置一个大小26的数组,用来表示26个字母
public class Trie {
//前缀树的节点
//每个节点包含26个字母
//是否为叶子节点的标志
//根节点为空节点
//从根节点出发,迭代添加
//如果当前字符没有添加,就新建
//更新pre
//添加完之后,将isLeaf置为true,标识存储完了
//从根节点开始查找
//如果遇到一处没有,就返回false
//更新pre
//返回最后一个字符的isLeaf
//从根节点开始查找
//如果遇到一处没有,就返回false
//更新pre
}