Trie 동작 과정

Trie 구현하기

// 전체 코드
class TrieNode {
	Map<Character, TrieNode> childNode = new HashMap<>();
	boolean end;

	public void insert(String word) {
		TrieNode trieNode = this;
		for (int i = 0; i < word.length(); i++) {
			char c = word.charAt(i);

			trieNode.childNode.putIfAbsent(c, new TrieNode());
			trieNode = trieNode.childNode.get(c);

			if (i == word.length() - 1) {
				trieNode.end = true;
				return;
			}
		}
	}

	public boolean contains(String word) {
		TrieNode trieNode = this;
		for (int i = 0; i < word.length(); i++) {
			char c = word.charAt(i);

			TrieNode node = trieNode.childNode.get(c);
			if (node == null) {
				// 문자가 존재하지 않음
				return false;
			}
			trieNode = node;
		}
		// 해당 단어로 종료하는 문자가 있는 경우 false
		return trieNode.end;
	}

}