-
Notifications
You must be signed in to change notification settings - Fork 0
Implement Trie (Prefix Tree)
Roberto Fronteddu edited this page Aug 13, 2024
·
2 revisions
A trie (pronounced as "try") or prefix tree is a tree data structure used to efficiently store and retrieve keys in a dataset of strings. There are various applications of this data structure, such as autocomplete and spellchecker.
Implement the Trie class:
- Trie() Initializes the trie object.
- void insert(String word) Inserts the string word into the trie.
- boolean search(String word) Returns true if the string word is in the trie (i.e., was inserted before), and false otherwise.
- boolean startsWith(String prefix) Returns true if there is a previously inserted string word that has the prefix prefix, and false otherwise.
class Trie {
class TrieNode {
public Map<Character, TrieNode> children = new HashMap<>();
public boolean isWord;
}
TrieNode root;
public Trie() {
root = new TrieNode();
}
public void insert (String word) {
var node = root;
for (char c : word.toCharArray()) {
if (!node.children.containsKey(c)) {
node.children.put (c, new TrieNode());
}
node = node.children.get(c);
}
node.isWord = true;
}
public boolean search(String word) {
var node = root;
for (char c : word.toCharArray()) {
if (!node.children.containsKey(c)) {
return false;
}
node = node.children.get(c);
}
return node.isWord;
}
public boolean startsWith(String prefix) {
var node = root;
for (char c : prefix.toCharArray()) {
if (!node.children.containsKey(c)) {
return false;
}
node = node.children.get(c);
}
return true;
}
}