forked from NKaty/Algorithms-and-Data-Structures
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTrie-node.js
More file actions
35 lines (27 loc) · 772 Bytes
/
Trie-node.js
File metadata and controls
35 lines (27 loc) · 772 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class TrieNode {
constructor(character, isWord = false) {
this.character = character;
this.characters = {};
this.isWord = isWord;
}
getSubNode(char) {
return this.characters[char];
}
addSubNode(char, isWord = false) {
if (!this.getSubNode(char)) this.characters[char] = new TrieNode(char, isWord);
else this.characters[char].isWord = this.characters[char].isWord || isWord;
return this.characters[char];
}
removeSubNode(char) {
const subNode = this.getSubNode(char);
if (subNode && !subNode.isWord && !subNode.hasSubNodes()) {
delete this.characters[char];
return subNode;
}
return false;
}
hasSubNodes() {
return !!Object.keys(this.characters).length;
}
}
module.exports = TrieNode;