Skip to content

Commit eac3e81

Browse files
appleJaxtrekhleb
authored andcommitted
Fix TrieNode.addChild so substrings get marked as complete words (trekhleb#177)
1 parent 872a38f commit eac3e81

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/data-structures/trie/TrieNode.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ export default class TrieNode {
2929
this.children.set(character, new TrieNode(character, isCompleteWord));
3030
}
3131

32-
return this.children.get(character);
32+
const childNode = this.children.get(character);
33+
childNode.isCompleteWord = childNode.isCompleteWord || isCompleteWord;
34+
35+
return childNode;
3336
}
3437

3538
/**

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,14 @@ describe('Trie', () => {
4141

4242
trie.addWord('cat');
4343
trie.addWord('cats');
44+
trie.addWord('carpet');
4445
trie.addWord('car');
4546
trie.addWord('caption');
4647

4748
expect(trie.doesWordExist('cat')).toBe(true);
4849
expect(trie.doesWordExist('cats')).toBe(true);
50+
expect(trie.doesWordExist('carpet')).toBe(true);
51+
expect(trie.doesWordExist('car')).toBe(true);
4952
expect(trie.doesWordExist('cap')).toBe(false);
5053
expect(trie.doesWordExist('call')).toBe(false);
5154
});

0 commit comments

Comments
 (0)