효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합.
| 자료구조 | 접근 | 탐색 | 삽입 | 삭제 |
|---|---|---|---|---|
| 배열 | O(1) | O(n) | O(n) | O(n) |
| 스택 | O(n) | O(n) | O(1) | O(1) |
| 큐 | O(n) | O(n) | O(1) | O(1) |
| 이중 연결 리스트 | O(n) | O(n) | O(1) | O(1) |
| 해시 테이블 | O(1) | O(1) | O(1) | O(1) |
| 이진 탐색 트리 | O(logn) | O(logn) | O(logn) | O(logn) |
| AVL트리 | O(logn) | O(logn) | O(logn) | O(logn) |
| 레드 블랙 트리 | O(logn) | O(logn) | O(logn) | O(logn) |
| 자료구조 | 접근 | 탐색 | 삽입 | 삭제 |
|---|---|---|---|---|
| 배열 | O(1) | O(n) | O(n) | O(n) |
| 스택 | O(n) | O(n) | O(1) | O(1) |
| 큐 | O(n) | O(n) | O(1) | O(1) |
| 이중 연결 리스트 | O(n) | O(n) | O(1) | O(1) |
| 해시 테이블 | O(n) | O(n) | O(n) | O(n) |
| 이진 탐색 트리 | O(n) | O(n) | O(n) | O(n) |
| AVL트리 | O(logn) | O(logn) | O(logn) | O(logn) |
| 레드 블랙 트리 | O(logn) | O(logn) | O(logn) | O(logn) |
배열
같은 타입의 변수를 정해진 크기의 인접한 메모리 공간에 모아 놓은 구조.
삽입과 삭제에 O(n), 탐색에 O(1)이 소요됨.
랜덤 접근에 유리한 점을 가짐.
동적 배열
동적으로 요소를 할당할 수 있는 동적 배열.
맨 뒤, 맨 앞을 제외한 요소 삭제에 O(n), 탐색에 O(1) 소요됨.
요소를 추가하여 크기가 +1이 될 때마다 용량을 두 배로 늘림.
스택
마지막으로 들어간 데이터가 가장 먼저 나오는 구조.
삽입 및 삭제에 O(1), 탐색에 O(n) 소요됨.
큐
먼저 들어간 데이터가 가장 먼저 나오는 구조.
삽입 및 삭제에 O(1), 탐색에 O(n) 소요됨.
인접 행렬 방식
2차원 배열에 모든 정점들의 연결 정보를 입력하는 방식.
구현이 간단하고 연결 정보를 파악하는데 좋지만 공간이 낭비되고 시간 복잡도가 O() 소요된다.
인접 리스트 방식
각 정점의 리스트 배열을 만들어 해당 정점과 직접 연결된 노드들을 삽입.
연결 정보 탐색에 O(n)만 소요되고 공간의 낭비가 적지만 특정 두 점이 연결되었는지 확인하기 어렵다.
용어)
깊이: 루트 노드(0)에서 특정 노드까지 최단 거리로 갔을 때 거리
높이: 루트 노드(0)부터 리프 노드까지 거리 중 제일 긴 거리
레벨: 깊이와 유사함. 루트 노드를 0 또는 1로 정하여 표현.
이진 트리 (Binary Tree)
자식의 노드 수가 두 개인 트리.
이진 탐색 트리 (Binary Search Tree)
현재 노드의 왼쪽에는 현재 값보다 작은 값들만, 오른쪽에는 현재 값보다 큰 값들만 존재하는 이진 트리.
일반적으로 탐색 시 O(logn)이 걸리지만 선형적인 경우 O(n).
AVL트리
이진 탐색트리처럼 선형적인 트리가 되는 것을 방지.
왼쪽과 오른쪽의 높이 차이가 최대 1인 균형잡힌 이진 트리.
높이 차이가 1보다 커지면 rotation 작업을 통해 균형을 맞춤.
균형 판단: 현재 노드의 왼쪽 서브트리 높이 - 오른쪽 서브트리 높이 정보를 저장하고, 해당 값이 -1, 0, 1 중에 없다면 균형이 무너진 것으로 판단한다.
레드 블랙 트리
이진 탐색트리처럼 선형적인 트리가 되는 것을 방지.
왼쪽과 오른쪽의 높이 차이가 최대 1인 균형잡힌 이진 트리.
다음의 규칙을 기반으로 재배치하여 균형을 잡는 트리이다.
최대힙의 삽입 과정
최대힙의 삭제 과정
Priority Queue
대기열에서 우선순위가 높은 요소가 낮은 요소보다 먼저 제공되는 구조.
힙을 기반으로 구현하며 반복적으로 루트 노드를 제공함.
Map
특정 순서에 따라 키와 값의 조합으로 형성된 구조.