Skip to content

Commit f665acb

Browse files
committed
[Week5](gmlwls96) Implement Trie prefix Tree
1 parent 0e7cb61 commit f665acb

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Node() {
2+
val map = mutableMapOf<Char, Node?>()
3+
var isEnd = false
4+
}
5+
6+
class Trie() {
7+
/** insert, search, startWith 시간 복잡도 : O(n) * */
8+
val rootNode = Node()
9+
fun insert(word: String) {
10+
var currentNode = rootNode
11+
word.forEach { char ->
12+
if (currentNode.map[char] == null) {
13+
currentNode.map[char] = Node()
14+
}
15+
currentNode = currentNode.map[char]!!
16+
}
17+
currentNode.isEnd = true
18+
}
19+
20+
fun search(word: String): Boolean {
21+
var currentNode = rootNode
22+
word.forEach { char ->
23+
if (currentNode.map[char] == null) {
24+
return false
25+
} else {
26+
currentNode = currentNode.map[char]!!
27+
}
28+
}
29+
return currentNode.isEnd
30+
}
31+
32+
fun startsWith(prefix: String): Boolean {
33+
var currentNode = rootNode
34+
prefix.forEach { char ->
35+
if (currentNode.map[char] == null) {
36+
return false
37+
} else {
38+
currentNode = currentNode.map[char]!!
39+
}
40+
}
41+
return true
42+
}
43+
}

0 commit comments

Comments
 (0)