Delete Word from Trie
Visualization Player
Solution
Algorithm Steps
Code
JavaScript
class TrieNode {
constructor() {
this.children = {};
this.is_end_of_word = false;
}
}
class Trie {
constructor() {
this.root = new TrieNode();
}
insert(word) {
let node = this.root;
for (let char of word) {
if (!node.children[char]) {
node.children[char] = new TrieNode();
}
node = node.children[char];
}
node.is_end_of_word = true;
}
delete(word) {
const deleteWord = (node, word, index) => {
if (index === word.length) {
if (!node.is_end_of_word) return false;
node.is_end_of_word = false;
return Object.keys(node.children).length === 0;
}
const char = word[index];
const child = node.children[char];
if (!child) return false;
const shouldDeleteChild = deleteWord(child, word, index + 1);
if (shouldDeleteChild) {
delete node.children[char];
return !node.is_end_of_word && Object.keys(node.children).length === 0;
}
return false;
};
deleteWord(this.root, word, 0);
}
}
// Example usage:
const trie = new Trie();
trie.insert("apple");
trie.insert("app");
trie.delete("apple");
console.log(trie.search("apple")); // false
console.log(trie.search("app")); // true
Trie.prototype.search = function(word) {
let node = this.root;
for (let char of word) {
if (!node.children[char]) return false;
node = node.children[char];
}
return node.is_end_of_word;
};