1. 이진트리
기본적인 트리 중에서 모든 노드의 자식노드의 개수가 2 이하인 트리를 의미한다.
일반적인 트리에서 사용되는 용어들은 모두 동일하다.
루트(root)노드를 중심으로 두 개의 이진트리로 쪼갤 수 있으며 아래와 같은 구조를 가져야 한다.
2. 이진트리의 몇 가지 종류
- 포화 이진 트리 (Full Binary Tree) : 단말 노드를 제외한 모든 노드의 차수가 2인 이진 트리
- 완전 이진 트리 (Complete Binary Tree) : 단말 노드들이 트리의 왼쪽부터 채워진 형태의 이진 트리
- 완벽 이진 트리 (Perfect Binary Tree) : 포화 이진 트리 + 모든 단말 노드의 깊이가 같은 트리
3. 이진 트리 순회 방법
이진트리에 있는 데이터를 탐색하기 위한 순회 방식으로 크게 3개로 나눌 수 있다.
- 전위 순회 (Pre-order Traversal) : 루트 노드를 방문한 후, 왼쪽 서브트리, 오른쪽 서브트리를 순회하는 방식
위에 있는 이진 트리를 전위 순회한다면 방문 순서는 A-B-C-D-E-F-G가 된다. - 중위 순회 (In-order Traversal) : 왼쪽 서브트리, 루트노드, 오른쪽 서브트리 순서로 탐색한다.
마찬가지로 방문순서를 구해보면 C-B-D-A-F-E-G가 된다.
중위 순회를 거친 탐색은 이진트리에서 정렬된 순서로 데이터를 얻을 수 있다. - 후위 순회 (Post-order Traversal) : 왼쪽 서브트리, 오른쪽 서브트리, 루트노드 순서로 탐색한다.
C-D-B-F-G-E-A순서로 위의 이진 트리를 탐색하게 된다.
각각의 방법을 코드로 구현해 보면 트리를 순회하는 함수의 순서에 따라 그 방법이 나뉘게 된다.
4. 이진 트리 활용
- 이진 탐색 트리 (Binary Search Tree, BST) : 각 노드의 왼쪽에는 해당 노드보다 작은 값이 있고, 오른쪽 서브트리에는 큰 값의 노드들이 위치한 트리
데이터를 효과적으로 찾아낼 수 있기 때문에 검색속도를 향상시킬 수 있다. - 힙 (Heap) : 최대힙, 최소힙으로 나뉘며, 최대 힙의 경우 루트노드가 가장 큰 값을 가지게 된다.
이를 이용하여 우선순위 큐(Priority Queue)를 구현할 수 있다. - B 트리 : 데이터베이스를 관리하는데 주로 쓰이는 자료구조로 자식노드의 수가 2보다 커질 수 있다.
이를 이용하여 데이터를 읽거나 쓰는 데에 사용한다.
트리의 기본적인 개념 ▶ [자료구조]그래프, 트리 개념&예시
'알고리즘' 카테고리의 다른 글
[자료구조]해시 해시함수 해시테이블 충돌 개념, 해결법 (1) | 2024.01.31 |
---|---|
[자료구조]우선순위 큐, 힙 개념 작동 방식 (0) | 2024.01.30 |
[자료구조]그래프, 트리 개념&예시 (1) | 2024.01.27 |
[자료구조]스택, 큐 개념&예시 (1) | 2024.01.26 |
그래프 탐색 방법, 예시(DFS, BFS) (1) | 2024.01.25 |