// 向Trie中添加新的单词word publicvoidadd(String word){ Node cur = root; for (int i = 0; i < word.length(); i++) { char c = word.charAt(i); if (cur.next.get(c) == null) { cur.next.put(c, new Node()); } cur = cur.next.get(c); }
if (!cur.isWord) { cur.isWord = true; size++; } }
publicbooleanconstains(String word){ Node cur = root; for (int i = 0; i < word.length(); i++) { char c = word.charAt(i); if (cur.next.get(c) == null) { returnfalse; } cur = cur.next.get(c); } // 返回这个单词是否包含 return cur.isWord; } // 查询是否存在Trie中有单词以prefix为前缀 publicbooleanisPrefix(String prefix){ Node cur = root; for (int i = 0; i < prefix.length(); i++) { char c = prefix.charAt(i); if (cur.next.get(c) == null) { returnfalse; } cur = cur.next.get(c); } returntrue; } }