이진 탐색 트리(Binary Search Tree, BST)는 각 노드가 최대 두 개의 자식을 가지며, 왼쪽 자식은 현재 노드보다 작은 값이고 오른쪽 자식은 현재 노드보다 큰 값을 가지는 이진 트리이다.
이진 탐색을 이용하면 시간복잡도 O(logn) 으로 빠른 탐색이 가능하다. 그런데 이러한 이진 탐색을 위한 저장공간이 배열이기 때문에 (인덱스가 있어야한다) 결국 이 배열에 삽입/삭제 시에는 O(n) 의 시간복잡도를 가지게 된다.
탐색, 삽입, 삭제 에 전부 O(logn) 가지는 자료구조를 표현한 것이 이진 탐색 트리이다.
이진 탐색 트리의 순회 탐색에는 3가지 방법이 있다.
전위 순회
- 입력으로 들어온 현재 노드를 출력
- 왼쪽 노드 방문
- 오른쪽 노드 방문
중위 순회
- 왼쪽 노드를 방문
- 현재 노드를 출력
- 오른쪽 노드를 방문
후위 순회
- 왼쪽 노드 방문
- 오른쪽 노드 방문
- 현재 노드 출력
이진 탐색 트리의 단점은 루트 노드의 값 보다 계속 크거나 작은 값이 자식 노드로 들어오면 해당 이진 탐색 트리는 log(n) 의 시간 복잡도를 가질 수 없다는 것이다.
이를 방지하기 위해 균형 잡힌 트리가 필요하다.
균형 잡힌 트리는 트리의 깊이를 최소화하여 탐색, 삽입, 삭제 작업을 보다 효율적으로 수행할 수 있는 트리 구조를 말한다. 대표적인 균형 잡힌 트리로는 AVL 트리, 레드-블랙 트리, B 트리 등이 있다.
'자료구조 알고리즘' 카테고리의 다른 글
그래프 기초 (0) | 2024.05.29 |
---|---|
선형 자료 구조 - (스택, 벡터, 리스트 구현) (0) | 2024.05.29 |
BFS DFS 차이 (0) | 2024.05.27 |
트리와 그래프 (0) | 2024.05.27 |
배열(Array)과 연결 리스트(Linked List) (0) | 2024.05.27 |