Trie(前缀树)的java实现

实现 Trie 类:

class Trie {
          
   

        Trie[] children;
        boolean isEnd;
        public Trie() {
          
   
            children=new Trie[26];
            isEnd=false;
        }

        public void insert(String word) {
          
   
            Trie node=this;
            for (int i = 0; i < word.length(); i++) {
          
   
                char ch=word.charAt(i);
                if(node.children[ch-a]==null)
                    node.children[ch-a]=new Trie();
                node=node.children[ch-a];
            }
            node.isEnd=true;
        }

        public boolean search(String word) {
          
   
            Trie node=isPre(word);
            return node!=null && node.isEnd;
        }

        private Trie isPre(String word) {
          
   
            Trie node=this;
            for (int i = 0; i < word.length(); i++) {
          
   
                char ch=word.charAt(i);
                if(node.children[ch-a]==null)
                    return null;
                node=node.children[ch-a];
            }
            return node;
        }

        public boolean startsWith(String prefix) {
          
   
            return isPre(prefix)!=null;
        }
}
经验分享 程序员 微信小程序 职场和发展