1. Tree

- 사이클이 없는 연결/양방향 그래프
- ✅ 어떤 두 노드를 선택해도 경로는 항상 단 하나만 존재 (오직 하나의 부모를 가지며, 경로에서 바로 이전 노드가 부모가 됨)
- ✅ 계층형 구조 (여러 개의 하위 노드로 분기됨)
용어
A (Root, Depth: 0, Height: 2, Level: 1)
/ \
/ \
B C (Node, Depth: 1, Height: 1, Level: 2)
/ \ / \
D E F G (Leaf, Depth: 2, Height: 0, Level: 3)
| 용어 | 설명 |
| Node | 트리를 구성하는 기본 단위 |
| Root | 트리의 최상위 노드 |
| Leaf | 자식이 없는 노드 |
| SubTree | 특정 노드와 그 노드의 모든 자손 노드로 구성된 트리 |
| Level | 트리에서 같은 깊이의 노드들의 집합 |
| Depth | 루트 노드에서 특정 노드까지 도달하기 위한 엣지의 수 |
| Height | 특정 노드에서 가장 멀리 떨어진 리프 노드까지의 엣지의 수 |
2. 탐색
| 구분 | 너비 우선 탐색 (BFS) | 깊이 우선 탐색 (DFS) |
| 탐색 방식 | 가까운 노드부터 탐색 | 끝까지 깊게 탐색 |
| 진행 순서 | 현재 → 인접 노드 전체 → 다음 단계 | 한 방향으로 끝까지 → 되돌아옴 |
| 구현 방식 | 반복문 + Queue | 재귀 or Stack |
| 특징 | 레벨(거리) 순 탐색 | 경로 중심 탐색 |
| 사용 예 | 최단 경로, 레벨 탐색 | 트리, 백트래킹, 경로 탐색 |
| 시간 복잡도 | O(V + E) | O(V + E) |
3. 순회
A
/ \
B C
/ \ / \
D E F G
| 구분 | 전위 순회 (Preorder) | 중위 순회 (Inorder) | 후위 순회 (Postorder) |
| 순서 공식 | Root → Left → Right | Left → Root → Right | Left → Right → Root |
| 특징 | 구조를 빠르게 파악 | 정렬된 결과 (BST) | 자식 먼저 처리 |
| 활용 | 트리 복사, 표현식 | 이진 탐색 트리 정렬 | 삭제, 계산(후위식) |
| 예시 결과 | A → B → D → E → C → F → G | D → B → E → A → F → C → G | D → E → B → F → G → C → A |
3. 종류
이진 트리
- 각 노드가 최대 두 개의 자식노드를 가지는 트리입니다.
| 구분 | 포화 이진 트리 (Perfect) | 완전 이진 트리 (Complete) | 균형 이진 트리 (Balanced) |
| 핵심 정의 | 모든 레벨이 꽉 찬 트리 | 마지막 레벨만 덜 찰 수 있음 | 좌우 높이 차이가 크지 않음 |
| 노드 채움 상태 | 전부 100% 채워짐 | 왼쪽부터 순서대로 채움 | 구조 자유롭지만 균형 유지 |
| 높이 균형 | 완벽하게 균형 | 대부분 균형 | 균형 유지가 핵심 |
| 특징 | 가장 이상적인 트리 | 실전에서 가장 많이 사용 | 탐색 효율을 위한 구조 |
| 노드 수 공식 | 2^h - 1 | 일정하지 않음 | 일정하지 않음 |
예시) 포화 이진 트리
더보기
A
/ \
B C
/ \ / \
D E F G
예시) 완전 이진 트리
더보기
A
/ \
B C
/ \ /
D E F
예시) 균형 이진 트리
더보기
A
/ \
B C
/ \
D E
다진트리
- 각 노드가 세 개의 이상의 자식노드를 가지는 트리입니다.
4. 사례
| 사례 | 설명 | 예시 |
| DOM | 웹 페이지의 구조를 표현하는데 사용되는 트리 | HTML, XML 등에서 사용됩니다. |
| AST | 프로그램의 구조를 표현하기 위한 트리. | 컴파일러나 인터프리터에서 소스코드를 분석할 때 사용 |
| Search Tree | 효율적인 검색, 삽입, 삭제 연산을 지원하기 위한 트리 |
출처
'Data Structure' 카테고리의 다른 글
| [고급 자료구조] Tree: Trie (0) | 2023.10.26 |
|---|---|
| [자료구조] Graph (0) | 2023.10.26 |
| [기초 자료구조] HashTable (1) | 2023.10.26 |
| [기초 자료구조] Stack (0) | 2023.10.26 |
| [기초 자료구조] Queue (0) | 2023.10.26 |