29
자료구조 트리 (tree) yarn

자료구조 – 트리 (Tree)

Embed Size (px)

Citation preview

Page 1: 자료구조 – 트리 (Tree)

자료구조 – 트리 (tree)

yarn

Page 2: 자료구조 – 트리 (Tree)

tree?

root

Page 3: 자료구조 – 트리 (Tree)

tree

root

가지

Page 4: 자료구조 – 트리 (Tree)

tree의 용어

Level 0

sub tree Level 1

Level 2

depth

length

Page 5: 자료구조 – 트리 (Tree)

길이 (length)

• 길이(length) • 출발노드에서 목적지 노드까지의 노드 개수.

• 깊이 (depth) • root 노드에서 해당 노드까지 길이

• 높이 • root노드에서 가장 깊은 노드까지의 길이

• 레벨 • 깊이가 같은 노드의 집합

• 차수 • 해당노드의 자식수

Page 6: 자료구조 – 트리 (Tree)

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

Page 7: 자료구조 – 트리 (Tree)

이진 트리 (Binary Tree)

• 모든 노드의 차수가 2 이하.

root

왼쪽 자식 노드 오른쪽 자식노드

root

왼쪽 자식 노드 공백 노드

root

공백 노드 오른쪽 자식노드

Page 8: 자료구조 – 트리 (Tree)

이진 트리의 서브 트리

A

B C

D E F G

H I J K L

A의 왼쪽의 서브트리

B의 왼쪽의 서브트리

Page 9: 자료구조 – 트리 (Tree)

추상 자료형 이진 트리

Page 10: 자료구조 – 트리 (Tree)

이진트리의 특징

• n개의 노드를 가진 이진 트리는 항상 (n-1)개의 간선을 가진다.

• 높이가 h인 이진트리가 가질 수있는 노드의 최소 개수는 (h+1)개가 되며, 최대개수는 2 -1개가 된다. h+1

Page 11: 자료구조 – 트리 (Tree)

포화 이진 트리 (full binary tree)

A

B C

D E F G

H I L M O N J K

Page 12: 자료구조 – 트리 (Tree)

완전 이진 트리 (complete binary tree)

A

B C

D E F G

H I L J K

Page 13: 자료구조 – 트리 (Tree)

편향 이진 트리 (skewed binary tree)

A

B

C

D

A

B

C

D 왼쪽편향 이진트리 오른쪽편향 이진트리

Page 14: 자료구조 – 트리 (Tree)

배열을 이용한 완전 이진 트리 구현

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

부모노드

왼쪽 자식 오른쪽 자식

Page 15: 자료구조 – 트리 (Tree)

배열을 이용한 편향 이진 트리 구현

A

B

C

D

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

[10]

[11]

A

B

D

H

부모노드

왼쪽 자식 오른쪽 자식

Page 16: 자료구조 – 트리 (Tree)

연결 자료구조를 이요한 이진 트리 구현

left data right

left data right left data right

Page 17: 자료구조 – 트리 (Tree)

이진 트리의 전위 순회

F – B – A – D – C – E – G – I - H

Page 18: 자료구조 – 트리 (Tree)

이진 트리의 전위 순위 알고리즘

//재귀적 호출

Page 19: 자료구조 – 트리 (Tree)

이진 트리의 중위 순회

A – B – C – D – E – F – G - H

Page 20: 자료구조 – 트리 (Tree)

이진 트리의 중위 순회 알고리즘

//재귀적 호출

//재귀적 호출

Page 21: 자료구조 – 트리 (Tree)

이진 트리의 후위 순회

A – C – E – D – B – H – I – G - F

Page 22: 자료구조 – 트리 (Tree)

이진 트리의 후위 순회 알고리즘

Page 23: 자료구조 – 트리 (Tree)

이진 탐색 트리 (binary search tree)

• 탐색을 위한 자료구조로 이진 트리를 사용하기 위해서 저장할 데이터 크기에 따라 노드의 위치를 정의한 것이 이진 탐색 트리.

Page 24: 자료구조 – 트리 (Tree)

이진 탐색 트리 정의

• 모든 원소는 서로 다른 유일한 키를 갖는다.

• 왼쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작다.

• 오른쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 크다.

• 왼쪽 서브 트리와 오른쪽 서브 트리도 이진 탐색 트리다.

Page 25: 자료구조 – 트리 (Tree)

이진 탐색 트리의 구조

8

3 10

2 5 14

11 16

Page 26: 자료구조 – 트리 (Tree)

이진 탐색 트리의 탐색 연산 알고리즘

Page 27: 자료구조 – 트리 (Tree)

이진 탐색 트리의 삽입 연산

Page 28: 자료구조 – 트리 (Tree)

이진 탐색 트리에서 삭제 알고리즘

Page 29: 자료구조 – 트리 (Tree)

히프

• 완전 이진 트리에 있는 노드 중에서 키값이 가장 큰 노드나, 가장 작은 노드를 찾기 위한 자료구조.

• 가장 큰 노드를 찾기 위한 히프르 max heap

• 가장 작은 노드를 찾기 위한 히프를 min heap

• max heap는 부모의 노드 키값이 자식의 키값 보다 항상 크다.

• min heap는 부모의 노드 키값이 자식의 키값 보다 항상 작다.