각각의 노드의 자식노드 수가 2개 이하로 구성되어 있는 트리
1. 정이진 트리(Full Binary Tree) : 자식 노드가 0 또는 2개인 이진트리, 잎새노드를 제외한 모든 노드가 자식노드를 2개 가진 트리
1
/ \
2 3
/ \
4 5
2. 완전 이진 트리 (Complete Binary Tree) : 왼쪽부터 채워져 있는 이진 트리
마지막 레벨을 제외하고는 모든 레벨이 완전히 채워져 있고 마지막 래밸의 경우 왼쪽부터 채워져 있음
1
/ \
2 3
/ \ / \
4 5 6 7
/ \
8 9
/
10
3. 변질 이진 트리 (Degenerate Binary Tree) : 리프노드 제외 , 자식 노드가 하나밖에 없는 이진트리
1
\
2
\
3
\
4
4. 포화 이진 트리 (Perfect Binary Tree) : 모든 노드가 꽉 차 있는 이진 트리
1
/ \
2 3
/ \ / \
4 5 6 7
5. 균형 이진 트리 (Balanced Binary Tree) : 모든 노드에 대해 , 그 노드의 왼쪽하위 트리와 오른쪽 하위 노드의 높이 차이가 1이하인 이진 트리 , 즉 트리의 어느한쪽이 지나치게 치우치지 않도록 구조가 유지된 트리// 그 구조 덕분에 탐색, 삽입, 삭제 등의 연산에서 시간 복잡도가 O(log N)으로 보장될 수 있다
// 균형이진트리의 높이 차이는 각 하위 트리의 전체 높이를 기준을 계산(e.g. 한 노드의 왼쪽 하위 트리의 높이가 1이고 오른쪽 하위 트리의 높이가 0이면 이 노드의 하위트리 높이 차이는 1이다)
4
/ \
2 8
/ \ / \
3 - 6 9
/ \ / \
5 7 - -
6. 레드-블랙 트리(Red-Black Tree)는 균형 이진 트리의 한 예로, 자가 균형을 유지하기 위한 특정한 규칙들을 갖춘 이진 탐색 트리. 이 규칙들덕분에 레드-블랙트리는 최악의 경우에도 효율적인 연산을 보장하며,C++의 std::map과 std::set 같은 데이터 구조의 내부 구현에 사용됨
특징: 노드가 빨간색(Red) 또는 **검은색(Black)**으로 색칠됩니다.
(B) 7
/ \
(R) 3 (B) 18
/ \
(B) 1 (R) 22
트리 종류정의특징
정 이진 트리 | 자식 노드가 0 또는 2개인 이진 트리 | 한 노드에 자식이 하나만 있는 경우 없음 |
완전 이진 트리 | 마지막 레벨을 제외하고 모든 레벨이 채워져 있으며 왼쪽부터 채움 | 노드를 왼쪽부터 차례로 채움 |
변질 이진 트리 | 각 노드에 자식 노드가 하나만 있는 이진 트리 | 구조가 연결 리스트와 유사 |
포화 이진 트리 | 모든 노드가 자식 2개를 가지고 리프 노드가 동일한 레벨에 존재 | 모든 레벨이 완벽하게 채워짐 |
균형 이진 트리 | 왼쪽과 오른쪽 하위 트리의 높이 차이가 1 이하인 트리 | 연산의 시간 복잡도가 O(log N)으로 보장됨 |
레드-블랙 트리 | 균형을 유지하는 규칙을 가진 이진 탐색 트리 | 탐색, 삽입, 삭제의 시간 복잡도가 O(log N)으로 보장 |
재귀함수 Recursion (1) | 2025.01.06 |
---|---|
이진 탐색 트리 (Binary Search Tree) && 그래프*Graph (0) | 2024.12.16 |
DFS depth first search & BFS breath first search // Tree트리 01 (0) | 2024.12.16 |
vector 벡터02 반복자(iterator) (2) | 2024.12.14 |
vector 벡터 (0) | 2024.12.14 |