2. Tree
공백이 아닌 유한한 원소들의 집합을 일컫는다.
root라 불리는 특별한 원소가 존재한다.
ROOT
subtree
3. 트리 용어
노드(node): 트리의 구성 요소
루트(root): 부모가 없는 노드, 최상위 노드
서브 트리(subtree) : 하나의 노드와 그 노드들의 자손들로 이루어진 트리
단말 노드(terminal node) : 자식이 없는 노드
비단말노드 : 적어도 하나 이상의 자식을 가지는 노드
레벨(level) : 트리의 각 층의 번호 (레벨은 1부터)
높이 : 트리의 최대 레벨
차수 : 노드가 가지고 있는 자식 노드의 개수
4. 이진 트리(Binary Tree)
유한개의 노드로 구성된 트리이다.
트리 중에서 자식 노드의 수가 2개 이하인 것을 지칭한다.
루트 노드와 2개의 부속 노드로 구성된다. 각각 오른쪽 부속 트리, 왼쪽 부속 트리라 부
른다.
이진 트리는 순서가 존재한다.
A
B
A
B
두 트리는 서로 다른 이진 트리이다.
5. 수학적 표현
/
* +
+ -
a b c d
e f
• ( a + b ) * ( c - d ) / ( e + f )
6. 트리의 노드 수와 높이
노드의 수를 n, 트리의 높이를 h라고 가정한다.
노드의 최소 개수 : h ( h 레벨 까지 모든 노드가 하나의 자식만 갖고 있는 경우)
노드의 최대 개수 : 2ℎ
− 1 (h 레벨 전에 모든 노드가 자식 노드를 갖고 있는 경우)
ℎ ≤ 𝑛 ≤ 2ℎ
− 1
𝐥𝐨𝐠 𝟐(𝒏 + 𝟏) ≤ 𝒉 ≤ 𝒏
7. Full Binary Tree
단말 노드가 아닌 모든 노드가 2개의 자식 노드를 갖는 트리를 지칭한다.
노드의 수는 2ℎ
− 1 이다.
a
b c
d e f g
Height 3의 full binary tree 이다.
10. Binary Tree 탐색
Preorder
‒ / * + a b – c d + e f
‒ 노드 -> 왼쪽 서브 트리 -> 오른쪽 서브 트리
Inorder
‒ a + b * c – d / e + f
‒ 왼쪽 서브 트리 -> 노드 -> 오른쪽 서브 트리
Postorder
‒ a b + c d - * e f + /
‒ 왼쪽 서브 트리 -> 오른쪽 서브 트리 -> 노드
/
* +
+ -
a b c d
e f
11. Priority Queues
각 원소들은 우선 순위를 가지고 있다.
높은 우선 순위를 가진 원소는 낮은 우선순위를 가진 원소보다 먼저 처리 된다.
같은 우선 순위를 가지는 경우 큐에서 그들의 순서에 따라 처리된다.
2
4 3
4 8 7
9
9
9
Min Tree
루트의 원소가 최소값
9
4 8
4 2 7
1
9
3
Max Tree
루트의 원소가 최eo값
12. Min & Max Heap
Min Heap
complete binary tree 이다.
min tree를 만족
Max Heap
complete binary tree이다.
max tree를 만족