您的位置:首页 > 其它

208. Implement Trie (Prefix Tree)

2016-07-28 09:01 369 查看
trie树的实现

class TrieNode {  //注意trie树类的成员变量
// Initialize your data structure here.
public char val;   //如果这里改成private char val  那么下面的node.val 无法使用
public boolean isWord;
public TrieNode[] children=new TrieNode[26];
public TrieNode() {
}
TrieNode(char c){
TrieNode node=new TrieNode();
node.val=c;
}
}

public class Trie {
private TrieNode root;

public Trie() {
root = new TrieNode();
root.val=' ';
}

// Inserts a word into the trie.
public void insert(String word) {
TrieNode ws=root;
for(int i=0;i<word.length();i++){
char c=word.charAt(i);
if(ws.children[c-'a']==null){
ws.children[c-'a']=new TrieNode(c);
}
ws=ws.children[c-'a'];
}
ws.isWord=true;
}

// Returns if the word is in the trie.
public boolean search(String word) {
TrieNode ws=root;
for(int i=0;i<word.length();i++){
char c=word.charAt(i);
if(ws.children[c-'a']==null) return false;
ws=ws.children[c-'a'];
}
return ws.isWord;
}

// Returns if there is any word in the trie
// that starts with the given prefix.
public boolean startsWith(String prefix) {
TrieNode ws=root;
for(int i=0;i<prefix.length();i++){
char c=prefix.charAt(i);
if(ws.children[c-'a']==null) return false;
ws=ws.children[c-'a'];
}
return true;
}
}

// Your Trie object will be instantiated and called as such:
// Trie trie = new Trie();
// trie.insert("somestring");
// trie.search("key");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: