Microsoft PowerPoint - 제8장-트리.pptx

Similar documents
chap 5: Trees

7장

chap 5: Trees

08장.트리

슬라이드 1

Microsoft PowerPoint - Chap5 [호환 모드]

05_tree

슬라이드 제목 없음

Microsoft PowerPoint - 자료구조2008Chap07

입학사정관제도

Microsoft PowerPoint - lec07_tree [호환 모드]

Microsoft PowerPoint - 제9장-트리의응용.pptx

Microsoft PowerPoint - chap10_tree

Chapter 4. LISTS

슬라이드 1

슬라이드 1

제 11 장 다원 탐색 트리

제 1 장 기본 개념

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Chapter 08. 트리(Tree)

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

슬라이드 1

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

슬라이드 1

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Chap 6: Graphs

Ch.1 Introduction

o 경로 (path) 트리에서사용하는용어 ~ 어떤한노드에서다른노드까지링크를통해이동했을때, 거쳐온노드들의집합. o 루트 (root) ~ 트리의가장상위에있는노드로루트는항상하나만존재 o 부모, 자식 (parent, children) ~ 링크로연결된노드중위에있는노드를부모노드,

C 언어 강의노트

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

슬라이드 1

Lab 3. 실습문제 (Single linked list)_해답.hwp

PowerPoint 프레젠테이션

11장 포인터

슬라이드 1

untitled

06장.리스트

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

1장. 리스트

03_queue

PowerPoint 프레젠테이션

e-비즈니스 전략 수립

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Algorithms

Microsoft PowerPoint - Chap5 [호환 모드]

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Chapter 4. LISTS

Chap 6: Graphs

슬라이드 1

슬라이드 1

슬라이드 1

CH06)자료구조.hwp

Microsoft PowerPoint - ch07 - 포인터 pm0415

5 장 트 리

1장. 리스트

Microsoft PowerPoint - 6장 탐색.pptx

Chap 6: Graphs

ABC 10장

adfasdfasfdasfasfadf

PowerPoint 프레젠테이션

2_안드로이드UI

02장.배열과 클래스

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint 프레젠테이션

EA0015: 컴파일러

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

PowerPoint Template

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table

Microsoft PowerPoint - 26.pptx

설계란 무엇인가?

11장 포인터

Chapter 4. LISTS

4.1 관계

금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

PowerPoint 프레젠테이션

1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ

리스트구현방법 배열 (array) 을이용하는방법 구현이간단 삽입, 삭제동작에따른원소이동. 항목의개수제한, 정적기억공간할당. 메모리낭비, 오버플로우 연결리스트 (linked list) 를이용하는방법 구현이복잡 삽입, 삭제가효율적 크기가제한되지않음 Lecture 03_Li

<4D F736F F F696E74202D FBFACB0E120C0DAB7E1B1B8C1B6205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 제3장-배열.pptx

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

설계란 무엇인가?

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

11강-힙정렬.ppt

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

리스트연산, 검색 + 삽입 + 삭제 새로운항목을리스트의처음, 중간, 끝에추가. 기존의항목을리스트의임의의위치에서삭제. 모든항목을삭제. 기존항목을대치 (replace). 리스트가특정항목을가지고있는지를검색 (search). 리스트의특정위치의항목을반환. 리스트안의항목의개수를센

Microsoft PowerPoint - chap4_list

슬라이드 1

Frama-C/JESSIS 사용법 소개

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

슬라이드 1

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

09J1_ _R.hwp

Transcription:

제 8 강의. 트리 (Tree) 자료구조 1. 트리의개념 2. 이진트리 3. 이진트리의저장 1

트리자료구조필요성연결리스트의삽입삭제시데이터를이동하지않는장점을살리자. 연결리스트의검색시노드의처음부터찾아가야하는단점을보완하자. 데이터를중간부터찾아가는이진검색의장점을이용하자. 연결리스트의포인터를리스트의중간에두는방법? ptr 10 23 34 42 56 검색을중간부터시작하여좌우중하나로분기, 1/2 씩검색대상을줄여나감으로써이진검색의효과를얻는다 ptr 34 23 42 10 56 2

1. 트리의개념 트리의정의트리는 1개이상의노드를갖는집합으로노드들은다음조건을만족한다. 1) 트리에는루트 (root) 라고부르는특별한노드가있다. 2) 다른노드들은원소가중복되지않는 n개의부속트리 (subtree) T1, T2,, Tn으로나누어지며 Ti 각각은루트의부속트리라고부른다. ( 트리는사이클이없는그래프 (acyclic graph) 이며계층구조를이룬다.) 트리 T 3 T 2 T 1 root 3

자료구조트리 (tree) 는나무를거꾸로그린다. 부속트리 T 1, T 2, T 3 는다시트리구조를이룬다. root root T 1 T 3 T 1 T 3 T 2 T 2 D E F H I J K L G M 4

루트 (root) 노드 레벨 (level) 1 D 2 E F G H I J 3 K L M 4 맆 (leaf) 노드 5

트리자료구조는왜필요할까요? - 트리구조에저장하면더효율적인자료들이있기때문이다. 예를들면, 계층적인데이터형태들은트리에저장하면자연스럽게표현된다. 1) 회사나정부의조직구조, 2) 나라, 지방, 시 군별, 계층적인데이터의저장, 3) 인덱스 ( 인덱스는계층적자료구조로검색을쉽게해준다.) 레벨 (Level) 한국 1 서울 경기 강원 2 강북 강남 수원 강릉 속초 원주 3 종로 신촌 중앙동 4 6

트리에관한용어 - 노드의차수 (degree) : 노드의부속트리의개수 - 트리의차수 (degree of tree) : 트리의최대차수 - 맆 (leaf, 단말, terminal) 노드 : 차수가 0인노드, 즉맨끝에달린노드들이다. - 내부 (internal, non-terminal) 노드 : 차수가 1 이상인노드 - 부모 (parent) : 부속트리 (subtree) 를가진노드 - 자식 (child) : 부모에속하는부속노드 - 형제 (sibling) : 부모가같은자식노드들 - 조상 (ancestor) : 노드의부모노드들의총집합 - 자손 (descendant) : 노드의부속트리에있는모든노드들 - 레벨 (level) : 루트노드들로부터깊이 ( 루트노드의레벨 = 1) - 트리의깊이 (depth of tree) : 트리에속한노드의최대레벨 7

* 트리의예전체노드개수 = 13 개단말 ( 맆 ) 노드개수 = 7 개내부노드개수 = 6 개 트리의차수 = 3 트리의깊이 = 4 루트노드 레벨 (level) 1 K 의조상들 D 2 E F G H I J 3 K L M 의자손들 맆노드들 ( 총 7 개 ) H 의형제노드 4 8

트리구조를컴퓨터내부에저장하는방법 1) n- 링크표현법 - 노드에 n 개의링크를두고자식의개수만큼링크에저장한다. 모든노드는자식노드수에관계없이최대 n 개의링크를갖는다. 각링크는부속트리가저장된곳을링크한다. * 차수가 n 인경우표현된노드 data link 1 link 2 link n 참고 : 트리를리스트형태로표현하는방법 괄호를사용하여같은레벨에있는노드들을같은괄호로묶는다. 예 ) (((E(K,L),F),(G),D(H(M),I,J))) 2) 왼쪽자식노드-오른쪽형제노드표현방법 모든노드에링크를 2개를둔다. 첫째링크는첫번째자식노드를표현하고둘째링크는자신의오른쪽형제노드를표현한다. - 노드의길이가 2개로고정되기때문에 n-링크방법보다간편하다. 9

* 왼쪽자식노드 - 오른쪽형제노드표현법 data left child right sibling * 왼쪽자식노드 - 오른쪽형제노드방법으로저장된트리 노드의모습 G D D D E F G H I J K L M E F G H I J K L M 10

차수가 n인트리를차수가 2인트리로저장하는방법 트리를왼쪽자식노드-오른쪽형제노드로변환하여그린다음 45도시계방향으로돌리면된다.( 약간수정은필요 ) 모든노드가 2개이하의자식노드를갖는다. 차수가 n인트리가차수가 2인트리가된다.( 이진트리 ) D D E F G H I J E F G H I J K L M K L M 일반트리 -> 왼쪽자식 - 오른쪽형제표현 -> 이진트리모양으로회전 11

E K F G D L H M I 왼쪽자식노드 - 오른쪽형제노드표현방법 > 이진트리모양 J 12

Q/ 1. 다음차수가 3 인트리를왼쪽자식 - 오른쪽형제노드표현방법으로바꾸어보아라. 13

2. 이진 (inary) 트리 자식노드의수가 2 개이하인것을이진트리 (binary tree) 라고한다. 대부분응용에서일반트리보다는원래부터이진트리로표현된문제가많다. 정의 ) 이진트리 (a binary tree) 는유한개의노드로구성된트리로 1) 비어있거나혹은 2) 루트노드와 2 개의부속트리로구성된다. 2 개의부속트리는왼쪽부속트리, 오른쪽부속트리라고부른다. * 주의 : 노드가없는경우도이진트리의일종이다. 이진트리의예 : 왼쪽두트리는서로다른이진트리이다. 14

이진트리의성질 이진트리는자식의개수가 2개이하인일반트리와약간다르다. 노드가없는트리도 (empty node) 도이진트리가된다. 부속트리 ( 자식노드 ) 에순서가있다. 이진트리의최대레벨이 i 인경우트리의최대노드의개수는 2 i -1 이다. 레벨 1의최대노드개수 = 1 레벨 2의최대노드개수 = 2 레벨 i의최대노드개수 = 2 i-1 레벨 i인트리의최대노드는 = 1 + 2 + 4 + 8 + 2 i-1 = 2 i -1 이진트리의맆노드의개수 n 0 와차수가 1인노드의개수 n 1, 차수가 2인노드의개수 n 2 에관한다음의등식이성립한다. n 0 = n 2 + 1 ( 증명 ) 전체노드개수를 n이라고하면 1 n= n 2 + n 1 + n 0 ( 노드개수는세가지경우를합한것이다 ) 2 n= 2 * n 2 + 1 * n 1 + 0 * n 0 + 1 ( 전체노드수는자식노드를곱한식에다, 루트노드 1을더한다.) 두식을계산하면 n과 n 1 이소거되어증명성립 15

트리와이진 (inary) 트리의예 트리 왼쪽자식 - 오른쪽형제표현 이진트리 트리 왼쪽자식 - 오른쪽형제표현 이진트리 D D E F G E F G E F G 트리왼쪽자식 - 오른쪽형제트리이진트리 16

다양한이진트리 스큐 (skewed) 이진트리 ( 정의 ) 트리의노드가왼쪽이나오른쪽으로한쪽으로만노드가있는트리이다. 포화 (full) 이진트리 (full binary tree of depth k) ( 정의 ) 트리의깊이가 k( 레벨을 1로시작 ), 2 k - 1 노드를가진이진트리 ( 트리깊이가 1이면노드가 1개, 2이면 3개, 3이면 7개, 4이면 15개, 로트리에노드가꽉차있는이진트리이다.) 완전 (complete) 이진트리 (complete binary tree) ( 정의 ) n개의노드를가진 complete( 완전 ) 이진트리는포화이진트리에서노드에 1부터 n까지번호를붙였을때만들어진트리이다. 17

1 2 3 이진 (inary) 트리의예 4 5 6 7 8 9 10 11 12 13 14 15 포화 (full) 이진트리 ( 깊이 =4) D E F G D Skewed 이진트리 H I 완전 (complete) 이진트리 E 18

Q/ * 다음트리에대하여답을구해보자 (1) 깊이가 5인이진트리의노드의최소개수는? (2) 깊이가 5인이진트리의노드의최대개수는? (3) 깊이가 5인포화이진트리의노드의최소개수는? (4) 깊이가 5인포화이진트리의노드의최대개수는? (5) 깊이가 5인완전이진트리의노드의최소개수는? (6) 깊이가 5인완전이진트리의노드의최대개수는? (7) 이진트리에서자식이 2인노드의개수가 4개일때맆노드의개수는? 19

3. 이진 (inary) 트리의저장 이진트리의저장 3-1 배열을이용한저장트리의레벨순서대로배열에저장을해두는방법이다. 트리의노드를레벨순서대로왼쪽에서오른쪽으로저장한다. 배열이름을 T[] 라고하면루트노드는 T[0] 에, 레벨 2 의첫째노드는 T[1] 에, 둘째노드는 T[2] 에,, 저장하는방식이다. 배열에저장할경우임의의배열원소의부모와왼쪽, 오른쪽자식을찾는함수는다음과같이된다.( 첨자가 0 부터시작할경우 ) 1) 부모노드의위치 parent(i) = (i 1) / 2 if i 0 parent(i) = 0 if i = 0 : ( 루트노드는부모가없다.) 2) 왼쪽자식의위치 - left_child(i) = 2 i + 1 3) 오른쪽자식의위치 - right_child(i) = 2 i + 2 * 첨자가 1 부터시작하면? 20

배열에저장된이진 (inary) 트리예 1 예를들어 T[6] 의부모는 T[(6-1)/2] 이고 T[3] 노드의왼쪽자식은 T[3*2 +1] 이다. T[1] 의오른쪽자식노드의위치를찾아보아라.( 소수점이하는버린다.) H D E F G I [0] [1] [2] [3] [4] [5] [6] [7] [8] D E F G H I 배열 T[ ] 21

배열에저장된이진 (inary) 트리예 2 E D [0] [1] [2] [3] [4] [5] [6] [7] [8] [15] - - - - D - E skew 이진트리 배열에서데이터가비어있는곳이많다. 22

배열을이용한이진트리저장의문제점 (1) 배열의이용하지않는저장공간이많다. 깊이가 k 인트리에서전체필요한공간은 S(k) = 2 k 1 이지만 skewed 이진트리처럼깊이에비하여노드수가적은경우기억공간활용율이낮다. - complete( 완전 ) 이진트리의저장에는효과적이다 (2) 트리의최대깊이를대비하여많은기억장소를확보하고, 트리가예상보다커지면프로그램수행을종료해야한다. 23

3-2 연결리스트를이용한트리의표현 (1) 데이터 (2) 왼쪽자식에대한포인터 (3) 오른쪽자식에대한포인터 struct tnode { int data; struct tnode * left_child; struct tnode * right_child; }; typedef struct tnode node; typedef node * tree_ptr; left_child data right_child left_child data right_child 24

연결리스트로표현한트리예 1 D E F G H I D null E null null F null null G null null H null null I null 25

연결리스트로표현한트리예 2 null null root null D D null E null E null skewed 이진트리경우 26

참고 이진트리를연결리스트로표현하는다른방법 필드를한개더추가하여부모노드에대한포인터를저장한다. 그러나트리를다룰때링크 3 개를관리해야하므로복잡하여잘사용하지않는다. parent left_child data right_child parent data left_child right_child 27

이진트리저장방법의비교 (1) 배열 - 저장이편하다. 배열선언 int T[MX]; - 노드의위치를쉽게알수있다. 첨자가 0부터시작한다고가정 m 레벨의 k번째노드의인덱스위치는? -> (2 m-1 1) + (k -1) 노드는 T[(2 m-1 1) + (k -1)] 에위치 (2) 연결리스트 - 트리의크기와깊이에관계없이노드수만큼의데이터를저장한다. - 트리의크기가증가하여도기억장소에서노드를확보하여트리를구성 - 트리전체를탐색하는알고리즘이배열보다는복잡하다. 28

일반트리도이진트리로변형하여저장하는것이더효율적이다. ( 일반트리에서자식노드의개수가변하기때문에저장방법이쉽지않다.) D D E F G E F G E F 트리 왼쪽자식 - 오른쪽형제트리이진트리 G 29

Q/ 다음트리에대하여답을구해보자 (1) 트리의깊이는? (2) 노드번호 6의형제노드는? (3) 노드번호 6의조상노드들은? (4) 노드번호 6의오른쪽자식노드는? (5) 트리를배열 X[ ] 에저장하였을때 ( 첨자 0부터시작 ) X[6] 에저장되는데이터는무엇인가? (6) 연결리스트로저장한다면전체노드의수는? (7) 연결리스트로저장할경우, 링크필드의전체개수는? (8) 연결리스트로저장할경우, 전체링크필드중링크에값이있는필드의수는?(NULL이아닌필드 ) (9) 연결리스트로저장할경우, 링크의값이 NULL인필드의수는? 30

Review 트리는중요한자료구조중의하나이다. 이장에서는트리의기본개념, 부모노드, 자식노드, 형제노드, 이진트리, complete 이진트리, full 이진트리, skewed 이진트리등용어에대하여살펴보았다. 이진트리를컴퓨터에저장하는방법은배열을사용하는방법과연결리스트를사용하는방법이있다. 배열은간단한반면, 기억공간효율성, 확장성에문제가있다. 연결리스트방식은트리의노드에자식노드를가리키는포인터를사용하여자식노드와연결을시킨다. 대부분의응용에서는연결리스트를사용한다. 31