Trie树的实现
Trie树的实现
Trie树也就是字典树,可以高效地用来进行字符串地检索。具体实现如下:
class Trie {
// 树上节点类型
private class Node{
// 判断到该节点位置,是否是一个之前插入地字符串
public boolean isEnd;
// 不同字母分别对应不同地分支
public Node[] next;
Node()
{
isEnd = false;
next = new Node[26];
}
}
// 根节点
private Node root;
public Trie() {
root = new Node();
}
public void insert(String word) {
Node now = root;
for (int i = 0; i < word.length(); i ++)
{
int pos = word.charAt(i) - 'a';
if (now.next[pos] == null)
{
now.next[pos] = new Node();
}
now = now.next[pos];
}
//将这个节点设置为true,表示是一个合法的字符串
now.isEnd = true;
}
public boolean search(String word) {
Node now = root;
for (int i = 0; i < word.length(); i ++)
{
int pos = word.charAt(i) - 'a';
if (now.next[pos] == null)
return false;
now = now.next[pos];
}
return now.isEnd;
}
public boolean startsWith(String prefix) {
Node now = root;
for (int i = 0; i < prefix.length(); i ++)
{
int pos = prefix.charAt(i) - 'a';
if (now.next[pos] == null)
return false;
now = now.next[pos];
}
return true;
}
}
浙公网安备 33010602011771号