Implement Trie (Prefix Tree)

Implement a trie with insertsearch, and startsWith methods.

Note:
You may assume that all inputs are consist of lowercase letters a-z.

 

由于用的是 26位字母的array, 所以在trieNode 上甚至不用存val。

 1 class TrieNode {

 2     // Initialize your data structure here.

 3     Boolean isWord;

 4     TrieNode[] children;

 5     

 6     public TrieNode(){

 7         this.isWord = false;

 8         children = new TrieNode[26];

 9     }

10 }

11 

12 public class Trie {

13     private TrieNode root;

14 

15     public Trie() {

16         root = new TrieNode();

17     }

18 

19     // Inserts a word into the trie.

20     public void insert(String word) {

21         TrieNode cur = root;

22         for(int i = 0; i < word.length(); i ++){

23             Character c = word.charAt(i);

24             if(cur.children[c - 'a'] == null){

25                 TrieNode tmp = new TrieNode();

26                 cur.children[c - 'a'] = tmp;

27             }

28             cur = cur.children[c - 'a'];

29         }

30         cur.isWord = true;

31     }

32     

33     private TrieNode findNode(String word){

34         TrieNode cur = root;

35         for(int i = 0; i < word.length(); i ++){

36             Character c = word.charAt(i);

37             if(cur.children[c - 'a'] == null){

38                 return null;

39             }

40             cur = cur.children[c - 'a'];

41         }

42         return cur;

43     }

44     

45     // Returns if the word is in the trie.

46     public boolean search(String word) {

47         TrieNode end = findNode(word);

48         return end != null && end.isWord;

49     }

50 

51     // Returns if there is any word in the trie

52     // that starts with the given prefix.

53     public boolean startsWith(String prefix) {

54         return findNode(prefix) != null;

55     }

56 }

57 

58 // Your Trie object will be instantiated and called as such:

59 // Trie trie = new Trie();

60 // trie.insert("somestring");

61 // trie.search("key");

 

你可能感兴趣的:(tree)