Skip to content

Commit fee5c4e

Browse files
committed
implement trie prefix tree solution
1 parent 8f76d72 commit fee5c4e

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// TC: O(L)
2+
// SC: O(N * L)
3+
class TrieNode {
4+
5+
public boolean isEnd;
6+
public TrieNode[] children = new TrieNode[26];
7+
}
8+
9+
class Trie {
10+
11+
private final TrieNode root;
12+
13+
public Trie() {
14+
root = new TrieNode();
15+
}
16+
17+
public void insert(String word) {
18+
TrieNode node = root;
19+
for (char c : word.toCharArray()) {
20+
if (node.children[c - 'a'] == null) {
21+
node.children[c - 'a'] = new TrieNode();
22+
}
23+
node = node.children[c - 'a'];
24+
}
25+
node.isEnd = true;
26+
}
27+
28+
public boolean search(String word) {
29+
TrieNode node = traverse(word);
30+
return node != null && node.isEnd;
31+
}
32+
33+
public boolean startsWith(String prefix) {
34+
return traverse(prefix) != null;
35+
}
36+
37+
private TrieNode traverse(String sequence) {
38+
TrieNode node = root;
39+
for (char c : sequence.toCharArray()) {
40+
if (node.children[c - 'a'] == null) {
41+
return null;
42+
}
43+
node = node.children[c - 'a'];
44+
}
45+
return node;
46+
}
47+
}

0 commit comments

Comments
 (0)