[DA] Trie
Trie
๋ฌธ์์ด์ ์ ์ฅํ๊ณ ํจ์จ์ ์ผ๋ก ํ์ํ๊ธฐ ์ํ ํธ๋ฆฌ ํํ์ ์๋ฃ๊ตฌ์กฐ
๊ฒ์์ด ์๋์์ฑ, ์ฌ์ ์ฐพ๊ธฐ ๋ฑ์ ์์ฉ
๊ตฌ์กฐ
- ๋ฃจํธ๋ ๋น์ด์๋ค.
- ๊ฐ ๊ฐ์ (๋งํฌ)์ ์ถ๊ฐ๋ ๋ฌธ์๋ฅผ ํค๋ก ๊ฐ์ง
- ๊ฐ ์ ์ ์ ์ด์ ์ ์ ์ ๊ฐ + ๊ฐ์ ์ ํค๋ฅผ ๊ฐ์ผ๋ก ๊ฐ์ง
- ํด์ ํ ์ด๋ธ, ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ
class Node {
constructor(value = '') {
this.value = value;
this.children = new Map();
}
}
class Trie {
constructor() {
this.root = new Node();
}
insert(string) {
let currentNode = this.root;
for (const char of string) {
if (!currentNode.children.has(char)) {
currentNode.children.set(char, new Node(currentNode.value + char));
}
currentNode = currentNode.children.get(char);
}
}
has(string) {
let currentNode = this.root;
for (const char of string) {
if (!currentNode.children.has(char)) {
return false;
}
currentNode = currentNode.children.get(char);
}
return true;
}
}
const trie = new Trie();
trie.insert('bee');
trie.insert('tea');
console.log(trie.has('bee'));
console.log(trie.has('test'));
Leave a comment