Skip to content

Commit b1a613e

Browse files
caubtrekhleb
authored andcommitted
Use Map for TrieNode children (trekhleb#27)
1 parent 30ae323 commit b1a613e

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

src/data-structures/trie/TrieNode.js

+8-12
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,31 @@ export default class TrieNode {
22
constructor(character, isCompleteWord = false) {
33
this.character = character;
44
this.isCompleteWord = isCompleteWord;
5-
this.children = {};
5+
this.children = new Map();
66
}
77

88
getChild(character) {
9-
if (!Object.prototype.hasOwnProperty.call(this.children, character)) {
10-
return null;
11-
}
12-
13-
return this.children[character];
9+
return this.children.get(character);
1410
}
1511

1612
addChild(character, isCompleteWord = false) {
17-
if (!this.children[character]) {
18-
this.children[character] = new TrieNode(character, isCompleteWord);
13+
if (!this.children.has(character)) {
14+
this.children.set(character, new TrieNode(character, isCompleteWord));
1915
}
2016

21-
return this.children[character];
17+
return this.children.get(character);
2218
}
2319

2420
hasChild(character) {
25-
return !!this.children[character];
21+
return this.children.has(character);
2622
}
2723

2824
suggestChildren() {
29-
return Object.keys(this.children);
25+
return [...this.children.keys()];
3026
}
3127

3228
toString() {
33-
let childrenAsString = Object.keys(this.children).toString();
29+
let childrenAsString = this.suggestChildren().toString();
3430
childrenAsString = childrenAsString ? `:${childrenAsString}` : '';
3531
const isCompleteString = this.isCompleteWord ? '*' : '';
3632

src/data-structures/trie/__test__/TrieNode.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ describe('TrieNode', () => {
2626

2727
expect(trieNode.getChild('a').toString()).toBe('a');
2828
expect(trieNode.getChild('o').toString()).toBe('o');
29-
expect(trieNode.getChild('b')).toBeNull();
29+
expect(trieNode.getChild('b')).toBeUndefined();
3030
});
3131

3232
it('should check if node has specific child', () => {

0 commit comments

Comments
 (0)