자료구조 – 트리 (tree)

Post on 14-Jan-2017

324 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

자료구조 – 트리 (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는 부모의 노드 키값이 자식의 키값 보다 항상 작다.

top related