25
한밭대학교 컴퓨터공학과 38 5.7 Binary Search Trees 5.7.1 Definition 어떤 노드에서 왼쪽 subtree의 노드들의 key 값은 노드의 key값보다 작 고, 오른쪽 subtree의 key 값은 노드의 key값보다 큰 이진트리. * 순차탐색과 임의탐색이 가 14 19 10 5 12 16 8

New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 38

5.7 Binary Search Trees

5.7.1 Definition

어떤 노드에서 왼쪽subtree의 노드들의 key값은 노드의 key값보다 작고, 오른쪽 subtree의 key값은 노드의 key값보다 큰이진트리.

* 순차탐색과 임의탐색이 가능

14

1910

5 12 16

8

Page 2: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 39

5.7.2 Searching a Binary Search Tree

Root로부터 찾고자 하는 key값과비교하여 작으면 왼쪽으로, 크면오른쪽으로 탐색을 반복함.

예) ’12’ 를 탐색하는 경우

1단계 : root에서 비교 12가 작으므로 오른쪽으로 탐색

2단계 : 10과 비교 12가 크므로왼쪽으로 탐색

3단계 : 12의 탐색 완료

예) inorder 운행을 하는 경우

14

1910

5 12 16

8

Page 3: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 40

5.7.3 Insertion into a Binary Search Tree

탐색을 계속하여 탐색이 중지된 곳에 새로운 key값을 삽입함.

예) ‘13’, ‘17’, ‘2’삽입

14

1910

5 12 16

8

Page 4: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 41

5.7.3 Insertion into a Binary Search Tree

예제) 20, 15, 17, 28, 13, 25, 22, 10, 30, 19로만들어지는 이진탐색트리를 구하시오.

Page 5: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 42

5.7.4 Deletion from a Binary Search Tree

1) 단말노드인 경우 : 해당 노드삭제

2) 자노드가 하나인 경우 : 자노드를 부노드의 위치로 이동

3) 자노드가 둘인 경우 : 왼쪽서브트리에서 가장 큰 원소또는 오른쪽 서브트리에서 가장 작은 원소로 대체 (* 이들원소는 자노드가 하나이거나단말노드임)

14

1910

5 12 16

8

Page 6: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 43

5.7.4 Deletion from a Binary Search Tree

예) ‘8’, ‘19’, ‘10’ 삭제

14

1910

5 12 16

17138

Page 7: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 44

5.7.4 Deletion from a Binary Search Tree

예제) 17, 28 삭제

20

1713 25

2210

30

19

2815

Page 8: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 45

5.7.6 Height of a Binary Search Tree

이진탐색트리는 입력되는 자료의 순서에 따라 최악의 경우 트리의 높이가 자료의 수만큼 될 수도 있으므로 트리의 균형을 유지하기 위한 여러 가지 균형탐색트리들이 있다.

Page 9: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 46

5.8 Selection Trees

5.8.1 Introduction

대형 파일을 정렬할 때, 한번에 정렬할 수 없을 경우 여러 개의 작은 파일로 분할하여 정렬하고, 정렬된 작은 파일(Run)들을 합병(Merge)하여 정렬된 최종 파일을 구한다.(Externalsort) 이때 Run들의 key값중 가장 작은(큰)key값을 선택하는 방법

Page 10: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 47

5.8.2 Winner Trees

Run들의 key값들을 완전이진트리의 단말노드에 배열하면서, 제노드가 있으면 비교하여 승자를부노드로 올림을 반복함.

8

810 16 9

98

10

15

19

8

12

17

16

25

29

9

13

18

Page 11: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 48

5.8.2 Winner Trees

* 승자트리알고리즘

0 1 2 3 4 5 6 7

10

15

19

8

12

17

16

25

29

9

13

18

Page 12: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 49

5.8.2 Winner Trees

예제) 다음과 같은 Run들을 합병하기 위한 승자트리를 만들어라

5, 19, 26, 37

17, 22, 31, 39

4, 13, 25, 36

2, 16, 30, 35

15, 21, 23, 24

9, 18, 27, 32

7, 20, 33, 38

Page 13: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 50

5.8.3 Loser Trees

Run들의 key값들을 완전이진트리의 단말노드에배열하면서, 부노드로 올리고 부노드에 값이 있으면비교하여 승자를부노드로 올림을반복함.

9

810 16 9

1610

10

15

19

8

12

17

16

25

29

9

13

18

8

Page 14: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 51

5.8.3 Loser Trees

* 패자트리알고리즘

0 1 2 3 4 5 6 7

10

15

19

8

12

17

16

25

29

9

13

18

Page 15: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 52

5.8.3 Loser Trees

예제) 다음과 같은 Run들을 합병하기 위한 패자트리를 만들어라

5, 19, 26, 37

17, 22, 31, 39

4, 13, 25, 36

2, 16, 30, 35

15, 21, 23, 24

9, 18, 27, 32

7, 20, 33, 38

Page 16: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 53

5.9 Forests

정의 : 하나 이상의 트리들의 집합

F

A

C DB

E G

IH

Page 17: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 54

5.9.1 Transforming a Forest into a Binary Tree

트리를 이진트리로 변환하면 root의 오른쪽은 항상 0링크가 되므로 이를 이용하면 forest를 하나의이진트리로 변환할 수 있다.

Page 18: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 55

5.9.2 Forest Traversals

- preorder, inorder 변환된 이진트리의 순회와 동일

- postorder : 그림5.34(BCDFEHIGA)

F

A

C DB

E G

IH

Page 19: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 56

5.10 Representation of Disjoint Sets

5.10.1 Introduction

분리집합의 트리 표현

집합을 트리형태로 표현하되 자노드가 부노드로 링크

예)

s1 = {0, 6, 7, 8}, s2 = {1, 4, 9}, s3 = {2, 3, 5}

Page 20: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 57

5.10 Representation of Disjoint Sets

분리집합의 배열 표현

집합의 원소에 0~n-1의 번호를 부여하고, 배열 i번째 요소는 i번째 원소의 부노드를 가리킴, 이때 루트는 -1을 저장

예)

s1 = {0, 6, 7, 8}, s2 = {1, 4, 9}, s3 = {2, 3, 5}

i 0 1 2 3 4 5 6 7 8 9

parent

Page 21: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 58

5.10.2 Union and Find Operations

합집합(Union) : 두 집합트리 중의 하나를 다른 트리의 서브트리로 만듬, 즉 한 루트의 부모필드에 다른 루트 값을 저장함

탐색(Find) : 집합원소가 어느 집합에 포함된 것인지를 결정하려면, 부모필드를 따라 루트로 올라감

- Simple Union and Simple Find(Program 5.24)

Page 22: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 59

5.10.2 Union and Find Operations

Weighted Union(Program 5.25)

[Weighting rule for Union(i,j)] 루트 i인 트리의 노드 수가 루트 j인 트리의 노드 수보다 적으면, j를 i의부노드로 만듬

예제 5.3)

※ 트리의노드 수는 루트의 부모필드에 음수로 나타냄

i 0 1 2 3 4 5 6 7

parent

Page 23: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 60

5.10.2 Union and Find Operations

Collapsing Find(Program 5.26)

[Collapsing rule] j가 i로부터 루트로 가는 경로에있는 노드이고 parent[i] ≠ root(i)이면, parent[j]에root(i)를 저장함

예제 5.4) Find(7)

※ 7노드의 루트(0)를 찾고, 경로상의 모든 노드의 부모필드에0를 저장

i 0 1 2 3 4 5 6 7

parent

Page 24: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 61

5.10.3 Application to Equivalence Classes

예제 5.5)

0≡4

3≡1

6≡10

8≡9

7≡4

6≡8

3≡5

2≡11

11≡0

0 1 2 3 4 5 6 7 8 9 10 11

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Page 25: New 5.7 Binary Search Treescontents.kocw.net/KOCW/document/2014/hanbat/ahnkeehong1/... · 2016. 9. 9. · 5.7.4 Deletion from a Binary Search Tree 1) 단말노드인경우: 해당노드

한밭대학교 컴퓨터공학과 62

5.11 Counting Binary Trees

- 이진트리는 유일한 inorder, preorder 순서쌍을 갖는다.

- 이진트리는 유일한 inorder, postorder 순서쌍을 갖는다.

- 이진트리는 preorder, postorder 순서쌍은 유일하지 않을수 있다.

- n 개의 노드를 갖는 이진트리의 개수는