반응형
Trie(트라이)
트라이라는 것은 문자열 집합을 관리하는 트리이다.
하나의 간선은 하나의 알파벳을 나타내고,
트리를 내려가면서 만나는 간선의 알파벳을 모두 이어주면 원래의 문자열을 얻을 수 있다.
*그림이 좀 잘못되었는데 문자열 집합 중 abd가 아니라 ad가 맞음.
여기서 T라는 것은 문자열의 끝을 표시하는 것으로 T까지 경로를 이어주면 원래 문자열이 나오게 되는것이다.
그래서 트라이에 들어있는 문자열은 abc, ad, e,eg, f 가 된다.
이러한 트라이는 문자열의 삽입/ 삭제/탐색의 시간복잡도는 O(문자열의 길이)로 해시와 같은 복잡도로 빠른 편에 속한다.
또한 트라이를 응용하여 해시로는 할 수 없는 것들을 할 수 있다.
에를 들면 접두사 찾기 등등. 또한 정렬의 효과를 낼 수도 있다.
구현한 코드는 알파벳이 소문자로 들어올 때 적용이 되는 코드이다.
응용문제
주어진 문자열에서 서로 다른 부분 문자열을 사전순으로 나열 했을 때 K번째 부분 문자열을 구하는 문제.
*최대 문자열의 길이는 400으로 가정함.
전체 코드는 github에 업로드
-> https://github.com/goragoraki/Data-Structure
반응형
'CS > 자료구조(Data Structure)' 카테고리의 다른 글
[자료구조] Segment Tree(세그먼트 트리) c++ 구현, 설명 (0) | 2023.02.26 |
---|---|
[자료구조] 힙(Heap), 우선순위 큐(priority queue) c++ 구현, 설명 (0) | 2023.02.23 |
[자료구조] Binary Search Tree c++ 구현 [컴공과고씨] (0) | 2023.01.26 |
[자료구조] Quick sort(퀵 정렬) 구현 c++ [컴공과고씨] (0) | 2023.01.20 |
[자료구조] Linked List(링크드 리스트) c++ 구현 [컴공과고씨] (0) | 2023.01.19 |