Trie(트라이)
Trie(트라이)
Trie(트라이)
Trie 자료구조란?
일반 트리 자료구조 중 하나로, Digital Tree, Radix Tree, Prefix Tree라고도 불린다.
텍스트 자동 완성 기능과 같이 문자열을 저장하고 탐색하는데 유용한 자료구조이다.
Trie 자료구조의 형태는?
각 노드는 <Key, Value> 맵을 가지고 있다. Key는 하나의 알파벳이 되고, Value는 그 Key에 해당하는 자식 노드가 된다.
다음은 DEV, DEAR, PIE, POP, POW라는 단어가 들어있는 Trie 자료구조를 도식화한 것이다. 휴대폰 전화번호부에서 검색을 하거나 사전에서 단어를 찾는 것과 같다.
예를 들어, 아래 그림에서 ‘DEV’라는 문자열을 찾으려면 루트 노드에서부터 순차적으로 [D] -> [E] -> [V] 를 탐색한다.
- 그림에서 볼 수 있듯이
루트 노드는 특정 문자를 의미하지 않고, 자식 노드만 가지고 있다. 유의할 점은 ‘부모 노드’나 ‘자신이 어떤 알파벳(Key)에 해당하는 노드(Value)’인지를 가지고 있는게 아니라는 점입니다.
즉, 루트 노드는 [D], [P]라고 하는 알파벳을 Key로 하는 자식 노드들을 가지고 있고, [D]는 [E]를 Key로 하는 자식 노드, [P]는 [I]와 [O]를 Key로 하는 자식 노드들을 가지고 있는 것이다.
- 또 루트 노드를 제외한
노드의 자손들은 해당 노드와 공통 접두어를 가진다는 특징이 있다.즉, ‘DE’ 노드의 자손인 ‘DEAR’와 ‘DEV’는 ‘DE-‘를 공통 접두어로 가지며, ‘P’의 자손인 ‘POW’와 ‘PIE’는 ‘P-‘를 공통 접두어로 가진다.
Trie 자료구조의 특징
정렬된 트리 구조이다.(데이터에 따라 이진트리일 때도 있다.)
Trie는 자식 노드를 Map<Key, Value> 형태로 가지고 있다.
루트 노드를 제외한 노드의 자손들은 해당 노드와 공통 접두어를 가진다.
루트 노드는 빈 문자와 연관있다.(특정 문자가 할당되어 있지 않다.)
참고
This post is licensed under CC BY 4.0 by the author.

