File tree Expand file tree Collapse file tree
implement-trie-prefix-tree Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments