Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 8 additions & 12 deletions
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 = newMap();
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‎

Lines changed: 1 addition & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /