Upload
choonghyun-yang
View
324
Download
4
Embed Size (px)
Citation preview
자료구조 – 트리 (tree)
yarn
tree?
root
tree
root
가지
잎
tree의 용어
Level 0
sub tree Level 1
Level 2
depth
length
길이 (length)
• 길이(length) • 출발노드에서 목적지 노드까지의 노드 개수.
• 깊이 (depth) • root 노드에서 해당 노드까지 길이
• 높이 • root노드에서 가장 깊은 노드까지의 길이
• 레벨 • 깊이가 같은 노드의 집합
• 차수 • 해당노드의 자식수
Left Child Right Sibling 표현법
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
이진 트리 (Binary Tree)
• 모든 노드의 차수가 2 이하.
root
왼쪽 자식 노드 오른쪽 자식노드
root
왼쪽 자식 노드 공백 노드
root
공백 노드 오른쪽 자식노드
이진 트리의 서브 트리
A
B C
D E F G
H I J K L
A의 왼쪽의 서브트리
B의 왼쪽의 서브트리
추상 자료형 이진 트리
이진트리의 특징
• n개의 노드를 가진 이진 트리는 항상 (n-1)개의 간선을 가진다.
• 높이가 h인 이진트리가 가질 수있는 노드의 최소 개수는 (h+1)개가 되며, 최대개수는 2 -1개가 된다. h+1
포화 이진 트리 (full binary tree)
A
B C
D E F G
H I L M O N J K
완전 이진 트리 (complete binary tree)
A
B C
D E F G
H I L J K
편향 이진 트리 (skewed binary tree)
A
B
C
D
A
B
C
D 왼쪽편향 이진트리 오른쪽편향 이진트리
배열을 이용한 완전 이진 트리 구현
A
B
C
D
E
F
G
H
I
J
K
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
A
B C
D E F G
H I L J K
부모노드
왼쪽 자식 오른쪽 자식
배열을 이용한 편향 이진 트리 구현
A
B
C
D
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
A
B
D
H
부모노드
왼쪽 자식 오른쪽 자식
연결 자료구조를 이요한 이진 트리 구현
left data right
left data right left data right
이진 트리의 전위 순회
F – B – A – D – C – E – G – I - H
이진 트리의 전위 순위 알고리즘
//재귀적 호출
이진 트리의 중위 순회
A – B – C – D – E – F – G - H
이진 트리의 중위 순회 알고리즘
//재귀적 호출
//재귀적 호출
이진 트리의 후위 순회
A – C – E – D – B – H – I – G - F
이진 트리의 후위 순회 알고리즘
이진 탐색 트리 (binary search tree)
• 탐색을 위한 자료구조로 이진 트리를 사용하기 위해서 저장할 데이터 크기에 따라 노드의 위치를 정의한 것이 이진 탐색 트리.
이진 탐색 트리 정의
• 모든 원소는 서로 다른 유일한 키를 갖는다.
• 왼쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작다.
• 오른쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 크다.
• 왼쪽 서브 트리와 오른쪽 서브 트리도 이진 탐색 트리다.
이진 탐색 트리의 구조
8
3 10
2 5 14
11 16
이진 탐색 트리의 탐색 연산 알고리즘
이진 탐색 트리의 삽입 연산
이진 탐색 트리에서 삭제 알고리즘
히프
• 완전 이진 트리에 있는 노드 중에서 키값이 가장 큰 노드나, 가장 작은 노드를 찾기 위한 자료구조.
• 가장 큰 노드를 찾기 위한 히프르 max heap
• 가장 작은 노드를 찾기 위한 히프를 min heap
• max heap는 부모의 노드 키값이 자식의 키값 보다 항상 크다.
• min heap는 부모의 노드 키값이 자식의 키값 보다 항상 작다.