208. Implement Trie (Prefix Tree)

来源:互联网 发布:战争潜力知乎 编辑:程序博客网 时间:2024/05/18 04:00

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");


0 0
原创粉丝点击