본문 바로가기

Computer Science/Data structure

자료 구조 | 트라이

학습 목표

트라이의 원리와 구조를 설명할 수 있다.

 

트라이

  • 트라이(trie)는 기본적으로 트리 형태의 자료 구조다.
  • 트라이는 각 노드가 배열로 이루어져 있다는게 특징이다.

 

예시를 보자.

 

사진 출처 cs50

  • 영어 알파벳으로 이루어진 문자열 값을 저장한다고 생각해보자.
  • 노드는 a부터 z까지의 값을 가지는 배열이 될 것이다.
  • 배열의 각 요소, 즉 알파벳은 다음 층의 노드(a-z배열)를 가리킨다.

 

트라이의 시간 복잡도

앞선 예시와 같은 트라이에서 값을 검색하는데 걸리는 시간은 문자열의 길이에 의해 정해진다. 일반적인 영어 이름의 길이를 n이라고 했을 때, 검색 시간은 O(n)이지만, 대부분의 이름은 그리 크지 않은 상수이기 때문에 O(1)이나 마찬가지다.

 

생각해보기

트라이가 해시 테이블에 비해 가지는 장점과 단점은 무엇일까.

  • 트라이는 각 노드가 배열로 이루어져 있기 때문에 메모리를 많이 차지한다.
  • 하지만 해시 함수의 문제로 최악의 경우 시간 복잡도가 O(n)인 해시 테이블에 비해 트라이는 O(m)의 시간 복잡도를 보장한다(m=문자열의 길이).

이 글은 네이버 부스트 코스 David J. Malan(데이비드 J. 말란) 교수님의 모두를 위한 컴퓨터 과학(CS50 2019) 강의를 수강하고 작성한 글입니다. 본 강좌 내 실습에서는 CS50 Sandbox를 사용합니다.

 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org