v 이원탐색트리 (binary search tree) u 인덱스를조직하는한가지방법 u 이진트리 (binary tree) 유한한수의노드를가진트리 공백 (empty) 이거나루트와두개의분리된이진트리즉, 왼쪽서브트리 (left subtree) 와오른쪽서브트리 (right su

Size: px
Start display at page:

Download "v 이원탐색트리 (binary search tree) u 인덱스를조직하는한가지방법 u 이진트리 (binary tree) 유한한수의노드를가진트리 공백 (empty) 이거나루트와두개의분리된이진트리즉, 왼쪽서브트리 (left subtree) 와오른쪽서브트리 (right su"

Transcription

1 6장인덱스구조 v 인덱스 (index) u 특징 화일의레코드들에대한효율적접근을위한조직 < 키값, 레코드주소 ( 포인터 )> 쌍으로구성 u 종류 키값의유형에따른인덱스 기본인덱스 (primary index) : 키값이기본키인인덱스 보조인덱스 (secondary index) : 기본인덱스이외의인덱스 화일조직에따른인덱스 집중인덱스 (clustered index) : 화일의데이타레코드들의물리적순서와인덱스엔트리순서가동일한인덱스 비집중인덱스 (unclustered index) : 집중형태가아닌인덱스 데이타범위에따른인덱스 밀집인덱스 (dense index) : 데이타레코드하나에하나의인덱스엔트리가만들어지는인덱스. 역인덱스 (inverted index) 희소인덱스 (sparse index) : 데이타레코드그룹또는데이타블록에하나의엔트리가만들어지는인덱스

2 v 이원탐색트리 (binary search tree) u 인덱스를조직하는한가지방법 u 이진트리 (binary tree) 유한한수의노드를가진트리 공백 (empty) 이거나루트와두개의분리된이진트리즉, 왼쪽서브트리 (left subtree) 와오른쪽서브트리 (right subtree) 로구성 u 이원탐색트리 이진트리 각노드 N i 는레코드키 K i 와이키를가지고있는레코드포인터를포함 공백이아닌이원탐색트리의성질 모든노드는상이한키값들을갖는다. 루트노드 N i 의왼쪽서브트리 (Left(N i )) 에있는모든노드의키값들은루트노드의키값보다작다. 루트노드 N i 의오른쪽서브트리 (Right(N i )) 에있는모든노드의키값들은루트노드의키값보다크다. 왼쪽서브트리와오른쪽서브트리는모두이원탐색트리이다. 3 v 이원탐색트리 u 이진트리와이원탐색트리 그림 (a): 이원탐색트리가아님 그림 (b), (c): 이원탐색트리 (a) (b) (c) 4

3 이원탐색트리에서의검색 u 루트노드가 N i 인이원탐색트리에서키값이 K인노드를검색하는방법. 트리가공백 : 검색실패. K=K i : 노드 N i 가원하는노드 3. K<K i : N i 의왼쪽서브트리를검색, 즉 N i Root(Left(N i )) 로하여다시검색시작. K>K i : N i 의오른쪽서브트리를검색즉, N i Root(Right(N i )) 로하여다시검색시작 5 이원탐색트리에서의검색 u 연결리스트로표현된이원탐색트리에서의검색 노드는 key, left, right 필드로구성 searchbst(b, s_key) // B는이원탐색트리, s_key는검색키값 p B; if (p = null) then // 공백이진트리로실패 return null; if (p.key = s_key) then // 검색성공 return p; if (p.key < s_key) then // 오른쪽서브트리검색 return searchbst(p.right, s_key); else return searchbst(p.left, s_key); // 왼쪽서브트리검색 end searchbst() 6

4 이원탐색트리에서의삽입 u 루트노드가 N i 인이원탐색트리에키값이 K인노드를삽입. 트리가공백 : K를루트노드로삽입. K=K i : 트리에똑같은키값이이미존재하므로삽입을거부 3. K<K i : N i 의왼쪽서브트리로이동하여계속탐색 4. K>K i : N i 의오른쪽서브트리로이동하여계속탐색 5. K가있어야할위치에없어서탐색이실패로끝나는위치에 키값이 K인노드를삽입 삽입예 : 키값 3, 5 을삽입 (a) 이원탐색트리 (b) 키값 3 을삽입 (c) 키값 5 을삽입 7 이원탐색트리에서의삽입알고리즘 insertbst(b, new_key) // B는이원탐색트리, new_key는삽입할키값 p B; while (p null) do { // 삽입하려는키값을가진노드가이미있는지검사 if (new_key = p.key) then return; q p; // q는 p의부모노드를지시 if (new_key < p.key) then p p.left; else p p.right; } newnode getnode(); // 삽입할노드를만듦 newnode.key new_key; newnode.right null; newnode.left null; if (B = null) then B newnode; // 트리가공백인경우 else if (new_key < q.key) then // q는탐색이실패로종료하게된원소 q.left newnode; else q.right newnode; return; end insertbst()

5 이원탐색트리에서의삭제 u 노드를삭제한뒤에도트리는계속이원탐색트리의성질을유지해야됨 u 삭제할노드의자식수에따라상이한삭제연산. 자식이없는리프노드의삭제 단순히그노드를삭제. 자식이하나인노드의삭제 삭제되는노드자리에그자식노드를위치 3. 자식이둘인노드의삭제 삭제되는노드자리에왼쪽서브트리에서제일큰키값이나또는오른쪽서브트리에서제일작은키값으로대체 해당서브트리에서대체노드를삭제 u 삭제는포인터값의조정으로구조변경 u 삭제표시 ( 논리적삭제 ) 로대체가능 물리적으로즉각삭제하지않는경우 다만검색, 삽입시 : 삭제된노드의키값을참고로이용가능 정상적키값이아니므로특별취급이필요 9 이원탐색트리에서의삭제 u 삭제예 : 키값 4,, 5 삭제 (a) 삭제전 (b) 삭제후 이원탐색트리에서리프노드 (4) 의삭제 (a) 삭제전 (b) 삭제후 이원탐색트리에서자식이하나인노드 () 의삭제 (a) 삭제전 (b) 왼쪽서브트리의최대키값 (3) 으로대체 (c) 오른쪽서브트리의최소키값 (5) 으로대체 이원탐색트리에서자식이둘인노드 (5) 의삭제

6 이원탐색트리에서의삭제알고리즘 deletebst(b, d_key) p node to be deleted; // 삭제할키 d_key를가진노드 parent parent node of p; // 삭제할노드의부모노드 if (p = null) then return; // 삭제할원소가없음 case { p.left=null and p.right=null : // 삭제할노드가리프노드인경우 if (parent.left = p) then parent.left null; else parent.right null; p.left=null or p.right = null : // 삭제할노드의차수가 인경우 if (p.left null) then { if (parent.left = p) then parent.left p.left; else parent.right p.left; } else { if (parent.left = p) then parent.left p.right; else parent.right p.right; } p.left null and p.right null : // 삭제할노드의차수가 인경우 q maxnode(p.left); // 왼쪽서브트리에서최대키값을탐색 p.key q.key; deletebst(p.left, p.key); } end deletebst() 편향이원탐색트리 u 편향이원탐색트리 (skewed binary search tree) 리프노드의탐색시간은최악 N개의노드로구성된이원탐색트리에서최악의탐색시간 : N번의노드탐색

7 이원탐색트리의성능 u 성능 이원탐색트리의성능은트리의형태와노드에대한접근빈도에의존 우수한성능을위해서는. 가장자주접근되는노드는루트에가장가깝게유지. 이원탐색트리를균형트리 (balanced tree) 로유지 모든노드에대해양쪽서브트리의노드수가가능한똑같게만들어트리의최대경로길이를최소화 u 이원탐색트리의단점 삽입, 삭제후효율적접근을위한균형유지부담이큼 작은분기율 (branching factor) 에따른긴탐색경로와검색시간 분기율이 : 각노드는많아야두개의서브트리 log N + N 개의노드를갖는트리의최소높이 : ë û 3 v AVL 트리 u 96 년러시아수학자 Adelson-Velskii 와 Landis 가고안한높이균형이진트리 (height-balanced binary tree) u 이진트리의높이 : 루트에서어떤리프까지의가장긴경로의길이 u AVL 높이균형이진트리 삽입, 삭제, 검색시간 : O(logN) 트리의일부만재균형시키면서트리전체가균형을계속유지할수있도록함. u AVL 트리의정의 각노드의왼쪽서브트리의높이와오른쪽서브트리의높이차이가 이하인이원탐색트리 ½h(Left(N i )) h(right(n i ))½, N i T 공백서브트리의높이 : - 4

8 AVL 트리 u 균형인수 (balance factor,bf) 왼쪽서브트리의높이에서오른쪽서브트리의높이를뺀수, BF = h(left(t)) h(right(t)) 노드의균형인수가 ± 이하이면이노드는 AVL 성질 (AVL property) 을만족하고 ± 이상이면 AVL 성질을만족하지못한다고말함. AVL 트리의모든노드는균형인수가 ± 이하이다. 즉 AVL 트리의모든노드는이 AVL 성질을만족하고있다. 5 AVL 트리와 non-avl 트리 (a) (b) (c) AVL 트리 (a) (b) (c) non-avl 트리 6

9 AVL 트리에서의검색과삽입 () u 검색 일반이원탐색트리의검색방법과동일 시간복잡도 : O(logN) u 삽입 삽입되는노드에서부터루트까지의경로에있는조상노드들의균형인수 (bf) 에영향을줄수있음 노드삽입으로 AVL 트리가 non-avl 트리가되면삽입된노드와가장가까우면서불균형이된조상노드의균형인수가 ± 이하로되게트리구조를조정해야됨 7 AVL 트리에서의검색과삽입 () (a) AVL 트리 원소 의삽입으로노드 의 AVL 성질상실 (b) 원소 의삽입으로 non-avl 트리로변환 u 노드삽입으로균형인수가 ± 로된노드 x가출현 다음 4 가지경우중하나로인해발생 ( 노드 x 는균형인수가 ±) LL : x 의왼쪽자식 (L) 의왼쪽서브트리 (L) 에삽입 RR : x 의오른쪽자식 (R) 의오른쪽서브트리 (R) 에삽입 LR : x 의왼쪽자식 (L) 의오른쪽서브트리 (R) 에삽입 RL : x 의오른쪽자식 (R) 의왼쪽서브트리 (L) 에삽입

10 AVL 트리에서의검색과삽입 (3) u 회전 (rotation): 불균형이발생할때트리구조를변경하여균형을잡아주는것. 단순회전 (single rotation) 한번의회전만필요한균형 : LL, RR 탐색순서를유지하면서부모와자식원소의위치를교환. 이중회전 (double rotation) 두번의회전이필요한균형 : LR, RL T A B LL B A T T 3 T T T3 i) LL 회전 9 AVL 트리에서의검색과삽입 (4) T - A B - RR B A T T 3 T T T 3 ii) RR 회전 A C - LR(a) B A B C iii) LR(a) 회전

11 AVL 트리에서의검색과삽입 (5) - B A C LR(b) B C - A T T T 3 T 4 T T iv) LR(b) 회전 T 3 T 4 T - B A - C T 4 LR(c) T B C T T 3 A T 4 T T 3 v) LR(c) 회전 AVL 트리에서의검색과삽입 (6) - A C C RL(a) - B A B vi) RL(a) 회전 - A - C B RL(b) A C B T T T 3 T 4 T T T 3 T 4 vii) RL(b) 회전

12 AVL 트리에서의검색과삽입 (7) - A C B RL(c) A C - B T T T 3 T 4 T T T 3 T 4 viii) RL(c) 회전 AVL 트리회전 3 AVL 트리에서의검색과삽입 () 키리스트 (, 9,,,, 5, 3, 6, 4, 7,, ) 를차례대로삽입하면서 AVL 트리를구축하는예 RR 9 Þ (a) 키 삽입 (b) 키 9 삽입 (c) 키 삽입 9 9 LL Þ (d) 키 삽입 (e) 키 삽입 9 4

13 노드삽입에따른균형인수 (BF) 조정 u 노드삽입으로인한균형인수 (BF) 의변화 새로노드를삽입할때 BF에영향을받는노드는오직이새로운노드에서부터루트까지의경로상에있는노드들이다. 새로운노드를왼쪽서브트리로삽입하면그부모노드의 BF 를하나증가 (+) 시키고오른쪽서브트리로삽입하면 BF 를하나감소 (-) 시킨다. 이때이 BF 가 이되면 BF 조정은종료되고아니면다시그의부모노드의 BF 를변경한다. 즉, 자기가부모노드의왼쪽서브트리이면 BF 를하나증가 (+) 시키고오른쪽서브트리이면 BF 를하나감소 (-) 시키면서루트까지의경로를따라가면서 BF 조정작업을계속한다. 5 AVL 트리에서의검색과삽입 (9) (h) 키 6 삽입 LR Þ (f) 키 5 삽입 RL Þ (g) 키 3 삽입 (i) 키 4 삽입 4 6 6

14 AVL 트리에서의검색과삽입 () LR Þ (j) 원소 7 삽입 RR Þ (k) 원소 삽입 AVL 트리에서의검색과삽입 () (l) 키 삽입

15 AVL 트리에서의삽입알고리즘 () /* AVL 트리삽입알고리즘 */ insertavl(new_key) if (root = new_key) then { // 공백트리인경우 y gettreenode(); y.key newkey; root y; root.bf ; //bf 는균형인수 root.left null; root.right null; return true; } f null; a p root; q null; found false; // phase : new_key 의삽입위치 (q) 조사 while (p null and found = false) do if (p.bf ) then {a p; f q;} if (new_key < p.key) then {q p; p p.left;} // 왼쪽서브트리로이동 else if (new_key > p.key) then {q p; p p.right;} // 오른쪽서브트리로이동 else {y p; found true;} } // while // phase : new_key 를삽입하고균형화 9 AVL 트리에서의삽입알고리즘 () // phase : new_key 를삽입하고균형화 if (found = false) then { // new_key 는트리에없음. // new_key 를 q 의적절한자식으로삽입 y gettreenode(); y.key newkey; y.left null; y.right null; y.bf ; if (new_key < q.key) then q.left y; //q 의왼쪽자식으로삽입 else q.right y; //q 의오른쪽자식으로삽입 // a 에서 q 까지의경로에있는노드의균형인수를조정. // a 의정의에따라이경로상에있는모든노드들은그 // 균형인수가 이어야되기때문에이들의균형인수는 // ± 로변경된다. 따라서 // d= 은 new_key 가 a 의왼쪽서브트리로삽입되었다는 // 것을의미하고 // d=- 은 a 의오른쪽서브트리로삽입되었다는것을 // 의미한다. 3

16 AVL 트리에서의삽입알고리즘 (3) if (new_key > a.key) then {p a.right; b p; d -;} else {p a.left; b p; d ;} while (p y) do { if (new_key > p.key) then {p.bf -; p p.right;} // 오른쪽서브트리의높이가 증가 else {p.bf ; p p.left;} // 왼쪽서브트리의높이가 증가 } //while (p y) unbalanced true; // 트리가불균형인지를검사 if (a.bf = or a.bf+d = ) then // 트리가아직균형 {a.bf a.bf+d; unbalanced false; } if (unbalanced = true) then // 트리가불균형. 회전유형을결정 if (d = ) then { // 왼쪽불균형 if (b.bf = ) then { // LL 회전타입 a.left b.right; b.right a; a.bf ; b.bf ;} } else { // LR 회전타입 c b.right; b.right c.left; a.left c.right; c.left b; c.right a; switch (c.bf) { case : a.bf -; b.bf ; break; //LR(b) case - : b.bf ; a.bf ; break; //LR(c) case : b.bf ; a.bf ; break; //LR(a) } c.bf ; b c; // b 는새로운루트 } // else LR 회전타입 3 AVL 트리에서의삽입알고리즘 (4) if (unbalanced = true) then // 트리가불균형. 회전유형을결정 if (d = ) then { // 왼쪽불균형 if (b.bf = ) then { // LL 회전타입 ************ } else { // LR 회전타입 ************ } // else LR 회전타입 } // 왼쪽불균형 else { // 오른쪽불균형. 왼쪽불균형의대칭코드..// RR 회전타입..// RL 회전타입 } if (f = null) then root b; else if (a = f.left) then f.right b; } // if (unbalanced = true) return true; } // if (found = false return false; end insertavl() // b 를루트로하는서브트리가 // 균형을맞추고새로운서브트리가됨 3

17 AVL 트리의높이 u 높이균형이진트리의높이 N개의노드를가진높이균형이진트리는완전균형이진트리보다 45% 이상높아지지않음 log(n+) h.444log(n+)-.3 u 높이균형이진트리대완전균형이진트리 O(.4 log N) 대 O(log N) 높이균형이진트리의탐색시간이더길다 이유 : 트리의전체재균형을수행하지않기때문 u 수백만개의노드로구성된 AVL 트리가디스크에저장된상태에서의노드탐색은많은횟수의디스크접근을요구한다. 그래서 m-원탐색트리를고려하게된다. 33 v m-원탐색트리 (m-way search tree) u u 이원탐색트리보다높은분기율 : m개서브트리 장점 : 트리의높이가감소 ( 특정노드의탐색시간감소 ) 단점 : 삽입, 삭제시트리의균형유지를위해복잡한연산이필요 m-원탐색트리의성질 노드구조는 <n, P, K, P, K, P,, P n-, K n, P n > (n: 키값수, n<m, P i : 서브트리에대한포인터, K i : 키값 ) 한노드에있는키값들은오름차순 : K i < K i+, i n- 3 P i ( i n-) 가지시하는서브트리모든노드들의키값 < K i+ 4 P n 이지시하는서브트리의모든노드들의키값 > K n 5 P i 가지시하는서브트리는 m-원서브트리 34

18 3-원탐색트리 4 a b c d ^ ^ e f g h i j ^ ^ 키값 K i : (K i, A i ) 를의미하고, A i 는키값 K i 를포함하고있는데이타레코드의주소 35 m-원탐색트리의검색 searchmt(key) // m-원탐색트리의검색알고리즘 // key : 검색키값 // x : 노드 (<n, P, K, P, K, P,, P n-, K n, P n >) // root : 루트노드 // n : 노드에있는키의개수 x root; while( x!= null ) do { i ; n x.n; while( i <= n && key > x.k i ) i i+; if ( i <= x.n && key = x.k i ) then return A i ; // 키값 key를가진레코드의주소를반환 if (i > n) then x x.p n else x x.p i- } //while return null; // key와일치하는값이트리에없는경우 end searchmt() 36

19 m-원탐색트리의분석 u m-원탐색트리의탐색시간 : 탐색경로길이 ( 높이 ) 에비례 각레벨에서는한개의노드만탐색 분기율 (m) 을최대로하면트리의높이가낮아짐 u 한노드에 m-개키값을저장하는 m-원탐색트리 높이 h : n = (m h -) 개키값저장 ( 예 ) 4-원탐색트리 : 높이가 3이면 n=(4 3 -)=63개의키값을저장 u n개의키를가진 m-원탐색트리 최소높이 h = é log m (N+) ù 최대탐색시간 : O(log m (N+)) ( 예 ) m= 이면 : 이진트리탐색시간 37 v B-트리 u 97 년 Bayer & McCreight 가제안 u 균형 m-원탐색트리 가장많이사용되는인덱스방법 효율적인균형알고리즘을제공 u 차수 (order) 가 m인 B-tree 의특성 B-트리는공백이거나높이가 이상인 m-원탐색트리 루트와리프를제외한내부노드 - 최소 é m/ ù, 최대 m개의서브트리 - 적어도 é m/ ù - 개의키값 ( 노드의반이상이채워짐 ) 3 루트 : 리프가아니면적어도두개의서브트리를가짐 4 모든리프는같은레벨 3

20 m차 B-트리노드구조 u 노드구조 < n, p, <K, A >, P, <K, A >, P,, P n-, <K n, A n >, P n > n : 키값의수 ( n<m), P,, P n : 서브트리에대한포인터, 각키값 K i 는그키값을가진레코드에대한포인터 A i 를포함 각노드의키값들은항상오름차순 ( i n- à K i < K i+ ) 을유지 3 P i 가지시하는서브트리의키값들은모두 K i+ 보다작다. 4 P n 이지시하는서브트리의키값들은모두 K n 보다크다. 5 P i ( i n) 가지시하는서브트리들은모두 m- 원서브탐색트리이다. u B-트리의장점 삽입, 삭제뒤에도트리의균형상태를유지 저장장치의효율성 각노드의반이상은항상키값으로채워짐 39 3차 B-트리구조 a 69 ^ b c d e f g h i ^ ^ ^ ^ ^ 3 45 j k l m n o p q r s t u v

21 B-트리에서의연산 u 검색 : m-원탐색트리의직접검색과같은과정 직접탐색 : 키값에따라왼쪽또는오른쪽서브트리로분기 노드에서의검색은순차검색예 ) 키값 4 검색 B-트리전체의순차검색은트리의중위순회 (inorder traversal) 로수행 u 삽입 : 새로운키값은항상리프노드에삽입 노드에공간이있는경우 : 단순히순서에만맞게삽입 노드에공간이없는경우 : overflow로 split 발생 해당노드를두개의노드로분할 해당노드에새로운키값삽입했다고가정 중간 ( ém/ù 번째 ) 키값을기준으로왼쪽작은키값들은그대로두고오른쪽큰키값들은새로운노드에저장 중간키값은분할된두노드가왼쪽서브트리, 오른쪽서브트리가되도록부모노드에삽입 이때, 다시 overflow가발생하면위와같은분할 (split) 작업을반복 4 B-트리에서의삽입 u 앞의 B-트리에새로운키값, 4, 59, 57, 54, 44, 75, 4,, 3 삽입 l l n 4 n 4 4 (a) 노드 l 에키 의삽입 (b) 리프노드 n 에키 4 의삽입 b b f 6 ^ f 5 6 p o 5 5 p o 5 o 59 (c) 노드 o 에키 59 의삽입 4

22 B-트리에서의삽입 o 5 o 5 57 o 5 57 o 5 o 57 (d) 노드 o 에키 57 의삽입 (d) 키 54 의삽입으로노드 o 의분할 (54 는부모노드 f 로이동 ) f 5 6 o o p f 54 ^ o o f 6 ^ o p (e) 노드 f 에키 54 의삽입 (5 는부모노드 b 에삽입 ) 43 B-트리에서의삽입 b 9 43 d e f b 9 ^ d e b 5 ^ f f (g) 노드 b 에키 5 의삽입 (43 은부모노드 a 에삽입 ) a 69 ^ b c (h) 노드 a 에키 43 의삽입 a b b c 나머지키값인 33, 75, 4, 를차례로삽입 : 문제가발생하지않음마지막키값인 3 을삽입 : B- 트리는한레벨증가됨 44

23 한레벨증가된 B-트리 a o 69 a a 43 b b c c d e e f f g g h i j k l m m n o o o p q r r r s t u v 차 B-트리생성과정 u 키값 43, 69, 3, 9 순으로삽입하여생성 (a) 크기가 인공백루트노드 (b) 키값 43 의삽입 ( 노드 개의 3 차 B- 트리 ) (c) 키값 69 의삽입 ( 노드 개의 3 차 B- 트리 ) (d) 키값 3 의삽입 ( 노드 3 개의 3 차 B- 트리 ) (e) 키값 9 의삽입 ( 노드 3 개의 3 차 B- 트리 ) 46

24 B-트리에서의삽입알고리즘 B- 트리삽입알고리즘 // In-key : 삽입할키 // Finished : 삽입완료를나타내는플래그 // Found : 레코드가발견되었음을나타내는플래그 // P : 노드에대한포인터 // Bignode : 오버플로노드를위한변수 // N : 키카운터 // 노드의주소를스택에저장하면서 In-key 가삽입될위치를탐색 Found = false; read root; do { N = number of keys in current node; if (n-key == key in current node) found = true; else if (In-key < key ) P = P o ; else if (In-key > key N ) P = P N ; else P = P i- ; /* for some i where key i- < In-key < key i */ if (P!= null) { push onto stack address of current node; read node pointed to by P; } } while (!Found && P is not null); 47 B-트리 } if (Found) report In-key already in tree; else { // In-key를 B-트리에삽입 P = null; Finished = false; do { if (current node is not full) { put In-key in current node; // 노드안에서키순서를유지하도록키를정렬 Finished = true; } else { copy current node to Bignode; insert In-key and P into Bignode; In-key = center key of Bignode; current node = st half of Bignode; get space for new node, assign address to P; new node = nd half of Bignode; if (stack not empty) { pop top of stack; read node pointed to; } else { // 트리의레벨이하나증가 get space for new node; new node = pointer to old root, In-key and P; Finished = true; } } } while (!Finished); 4

25 B-트리에서의삭제. 삭제할키값이리프노드에있는경우에는그대로삭제. 삭제될키값이내부노드에있는경우 이키값의후행키값과교환후리프노드에서삭제 B-트리특성상이후행키값은항상리프노드에있음 리프노드에서의삭제연산이더간단 후행키값대신선행키값을사용할수있음 삭제결과로노드의키값수가 B-트리의최소키값 m/ ù - ) 보다작게되면 underflow 가일어나재분배나합병을수행 3. 삭제수 (ém/ 49 B-트리에서의삭제 u 재분배 (redistribution) 해당노드의오른쪽이나왼쪽형제노드중에서최소키값보다많은수의키값을가진노드에서키값하나를차출 부모노드에있는키값을언더플로가일어난노드로이동하고, 이빈자리로차출된키값을이동 트리구조가변경되지않음 u 합병 (merge) 재분배가불가능한경우 ( 두형제노드가최소의키값만을가짐 ) 에적용 언더플로가된노드의오른쪽 ( 또는왼쪽 ) 형제노드에있는키값들과이두노드를분리시키는부모노드의키값을합치고트리구조를조정. 합병으로생긴빈노드는제거 트리구조가변경됨 이합병작업은투트노드까지연쇄적으로파급될수있음. 이경우에는트리의레벨이하나감소될수도있음. 5

26 B-트리에서의삭제 u 앞의 B-트리에서키값 5, 7, 6,, 5 삭제 o 5 5 o 5 j 7 5 j 5 노드 o 에서키값 5 의삭제 노드 j 에서키값 7 의삭제 b b b f 6 f 6 f 6 o 5 p 6 65 o 5 p 6 65 o 5 p 65 노드 f 에서키값 6 의삭제 5 B-트리에서의삭제 b b l e 6 4 m 3 36 n 4 l 6 e 3 4 m 36 n 4 노드 l 에서키값 의삭제 j 5 d 6 k b 9 43 e 3 l 6 a 4 m 36 f n 4 5

27 B-트리에서의삭제 jk 6 jk 6 d d 9 l 6 b 9 43 e 3 l 6 a b 3 43 e 4 m 36 4 a m 36 n 4 f n 4 f 노드 j 에서키값 5 의삭제 53 B-트리삭제알고리즘 B- 트리삭제알고리즘 // Finished : 삭제완료를나타내는플래그 // Tempnode : 재분배를위해사용할정상노드보다 5% 큰노드 // Sibling : 인접형제노드 // D-key : B- 트리에서삭제할키 search tree for D-key forming stack of node addresses; // 탐색은삽입알고리즘참조 if (D-key is not in terminal node) { search for successor key of D-key at terminal level (stacking node addresses); copy successor over D-key; terminal node successor now becomes the D-key; } // 키를삭제하고트리를재조정 Finished = false; 54

28 트리 do { remove D-key if (current node is root or is not too small) Finished = true; else if (redistribution possible) { // Sibling > minimum이면재분배 // 재분배실행 copy "best" Sibling, intermediate parent key, and current (too-small) node into Tempnode; copy keys and pointers from Tempnode to "best" Sibling, parent, and current node so Sibling and current node are roughly equal size; Finished = true; } else { // 적절한 Sibling과합병 choose best Sibling to concatenate with; put in the leftmost of the current node and Sibling the contents of both nodes and the intermediate key from the parent; discard rightmost of the two nodes; intermediate key in parent now becomes D-key; } } while (!Finished); if (no keys in root) { // 트리의레벨을하나감소 new root is the node pointed to by the current root; discard old root; } B- 트리 55 v B*- 트리 u B-트리의문제점 B-트리구조유지를위해추가적인연산이필요 삽입시노드의분할이나재분배, 삭제시노드의합병이나재분배 B*-트리는 B-트리의성능개선을위해 Knuth가제안한 B-트리의한변형 u B*- 트리 공백이거나높이가 이상인 m-원탐색트리 루트는리프가아닌이상최소 개, 최대 ë(m-)/3û+ 개의서브트리를갖는다. 3 루트와리프를제외한노드는적어도 ë(m-)/3û+개의서브트리, 즉최소 ë(m-)/3û 개의키값을갖는다. 4 모든리프는같은레벨에있다. 56

29 v B*- 트리 u u 삽입으로인한노드분할의빈도를축소 노드가오버플로되면즉시분할하는대신. 오버플로가된키값과포인터를바로인접한형제노드의여유공간을이용해재분배. 인접형제노드가모두만원이면두인접형제노드의키값들을 3개의노드로분할 한노드가만원이되더라도다른인접형제노드가만원이될때까지분할은지연 각내부노드는항상 /3 이상키값으로채워짐 같은키값의수에대해 B-트리보다적은수의노드가필요 57 7차 B*- 트리의생성 (a) 개의키값삽입으로만원이된 7 차 B*- 트리루트노드 (7 차에대한노드분할을위해서는 개의키값을갖는루트노드크기가필요 ) (b) 키값 9 의삽입으로루트노드가최초로분할된 7 차 B*- 트리 5

30 B*- 트리에서의삽입 u u 오버플로가발생하면인접형제노드에여유공간이있는지검사. 여유공간이있으면 오버플로키값을부모노드로올려보내고부모노드에있던분리키값을형제노드로이동시키거나또는 오버플로가된노드와인접형제노드의키값에다분리키값을포함해서이들을균등하게양분해서저장하고중간키값을분리키값으로부모노드에저장여유공간이없으면 만원이된두인접형제노드의키값들을부모노드의분리키값과함께 3개의노드로분할해서각노드의키값수가적어도 ë(m-)/3û이되도록재분배한다. 이때 개의키값은분리키값으로부모노드에저장된다. 59 5차 B*- 트리에서의삽입 u 재분배를이용한키값 4 의삽입 ( 노드 q) r 33 q 6 s r 6 q 4 s

31 5차 B*- 트리에서의삽입 u 노드분할을이용한키값 3 의삽입 ( 노드 q) r 6 q 4 s q r 33 q s B*- 트리에서의삭제 u B-트리에서의삭제와비슷. 키값삭제로최소키값수가유지되지않으면. 형제노드로부터재분배를받도록시도. 형제노드에여유키값이없으면 3개의노드를 개의노드로합병 합병으로인해트리의높이가한레벨낮아질수있음. 6

32 v 트라이 (Trie) u Trie: retrieval 의약자 u 키를구성하는문자나숫자의순서를이용해키값을검색할수있는자료구조 m- 진트리이지만 m- 원탐색트리는아님 : 키값의배열순서가다름 u m진트라이 (m-ary trie) 차수 m : 키값을표현하기위해사용하는문자의수, 즉기수 (radix) 숫자 : 기수가 이므로 m=, 영문자 : m = 6 m진트라이 : m개의포인터를표현하는 차원배열 각원소 ( 포인터 ) 는기수의원소에 :로대응 (p 는, p 5 는5) u 진트라이의노드구조 P P P P 3 P 4 P 5 P 6 P 7 P P 9 63 v 트라이 (Trie) u 트라이의높이 = 키필드의길이 u 진트라이의레벨 j의포인터 p i 는 j번째숫자가 i인모든키값을나타내는서브트라이를가리킴. 레벨 3에있는 p 4 는키값의 3번째숫자가 4인키값을가진서브트라이를가리킴. 해당숫자가없을때는널포인터로표시 u 키값 : 루트노드의 p i 에서리프노드의 p j 까지의경로를각포인터에대응하는기수원소로표현한것. u 리프노드에는해당키값을가진레코드의주소가저장됨 u 키검색뿐만아니라키의존재유무를빠르게결정 u 트라이에서널포인터만가지고있는공백노드는생성하지않음. 64

33 높이가 4인 진트라이 레벨 r P 레벨 a P 4 ¼ ¼ ¼ ¼ 레벨 3 b P 레벨 4 c ****** d ******* ******* ******* ********* **** ****** ***** : 널포인터 * : 해당키값을가지고있는데이타레코드의주소 65 m진트라이연산 u 검색 검색은리프에서종료되거나, 키값이없을때중간노드에서종료 검색속도는키필드의길이 ( 트라이의높이 ) 에비례 최대검색비용은키필드의길이 장점 : 균일한탐색시간 선호이유 : 없는키에대한빠른검색 u 삽입 새로운키값이삽입되어야할노드를검색 리프노드에새레코드의주소나존재표시를삽입 리프노드가없을때 : 새리프노드를생성하고중간노드를첨가 노드의첨가나삭제는있으나분열이나병합은없음 u 삭제 노드와원소들을찾아서널값으로변경 노드의원소값들이모두널 ( 공백노드 ) 인경우에는노드삭제 66

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

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

More information

제 11 장 다원 탐색 트리

제 11 장 다원 탐색 트리 제 11 장 다원탐색트리 Copyright 07 DBLB, Seoul National University m- 원탐색트리의정의와성질 (1) 탐색성능을향상시키려면메모리접근횟수를줄여야함 탐색트리의높이를줄여야함 차수 (degree) 가 2보다큰탐색트리가필요 m- 원탐색트리 (m-way search tree) 공백이거나다음성질을만족 (1) 루트는최대 m 개의서브트리를가진다.

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 C 로쉽게풀어쓴자료구조 생능출판사 2005 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 대표이사 응용분야 : 계층적인조직표현 총무부 영업부 생산부 파일시스템 인공지능에서의결정트리 전산팀구매팀경리팀생산 1 팀생산 2 팀 트리의용어 노드 (node): 트리의구성요소 루트 (root): 부모가없는노드

More information

chap 5: Trees

chap 5: Trees Chapter 5. TREES 목차 1. Introduction 2. 이진트리 (Binary Trees) 3. 이진트리의순회 (Binary Tree Traversals) 4. 이진트리의추가연산 5. 스레드이진트리 (Threaded Binary Trees) 6. 히프 (Heaps) 7. 이진탐색트리 (Binary Search Trees) 8. 선택트리 (Selection

More information

Discrete Mathematics

Discrete Mathematics 25 년봄학기 문양세컴퓨터과학과강원대학교자연과학대학 강의 강의내용 Binary Trees (Ch. 6 in 화일구조 ) B-tree, B*-tree, Trie (Ch. 6 in 화일구조 ) B + -tree (Ch. 7 in 화일구조 ) Indexed Sequential File (Ch. 7 in 화일구조 ) Page 2 색인, 인덱스 (Index) 특징 파일의레코드들에대한효율적접근구조

More information

Microsoft PowerPoint Index Structures.ppt

Microsoft PowerPoint Index Structures.ppt 자료처리 () 26 년봄학기문양세강원대학교컴퓨터과학과 강의 강의내용 Binary Trees (Ch. 6 in 화일구조 ) B-tree, B*-tree, Trie (Ch. 6 in 화일구조 ) B + -tree (Ch. 7 in 화일구조 ) Indexed Sequential File (Ch. 7 in 화일구조 ) Page 2 색인, 인덱스 (Index) 특징

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - 6장 탐색.pptx

Microsoft PowerPoint - 6장 탐색.pptx 01. 순차탐색 02. 이진탐색 03. 이진탐색트리 04. 레드블랙트리 탐색 (search) 기본적으로여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요. 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열, 연결리스트, 트리, 그래프등 탐색키데이터 순차탐색 (sequential

More information

7장인덱스된 순차화일 DBLAB, SNU v 인덱스된순차화일의구조 u 인덱스된순차화일 (indexed sequential file) 은순차데이타화일 (sequential data file) 과인덱스 (index) 로구성 u 순차데이타화일 키값에따라레코드들이순차적으로정렬

7장인덱스된 순차화일 DBLAB, SNU v 인덱스된순차화일의구조 u 인덱스된순차화일 (indexed sequential file) 은순차데이타화일 (sequential data file) 과인덱스 (index) 로구성 u 순차데이타화일 키값에따라레코드들이순차적으로정렬 7장인덱스된 순차화일 v 인덱스된순차화일의구조 u 인덱스된순차화일 (indexed sequential file) 은순차데이타화일 (sequential data file) 과인덱스 (index) 로구성 u 순차데이타화일 키값에따라레코드들이순차적으로정렬 레코드전체에대한순차접근을지원 u 인덱스화일 화일의레코드들에대한키값과포인터를저장 개별레코드에대한직접접근을지원 u

More information

Microsoft PowerPoint - lec07_tree [호환 모드]

Microsoft PowerPoint - lec07_tree [호환 모드] Tree 2008학년도 2학기 kkman@sangji.ac.krac kr -1- 트리 (Tree) 1. 개요 ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모 - 자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 -2- 트리자료구조를사용하는이유? ~ 다른자료구조와달리비선형구조. ~ 정렬된배열 탐색은빠르지만

More information

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

Microsoft PowerPoint - chap10_tree

Microsoft PowerPoint - chap10_tree Chap. 10 : Tree 2007 학년도 2 학기 1. 개요 재귀 (recursion) 의정의, 순환 ~ 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 ~ 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 ~ 정의자체가순환적으로되어있는경우에적합한방법 ~ 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색 -2-

More information

7장

7장 CHAP 7: 트리 C 로쉽게풀어쓴자료구조 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현파일시스템인공지능에서의결정트리 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산 1 팀생산 2 팀 * 예제 : 책그림 7-2, 7-3, 7-4 트리의용어 노드 (node): 트리의구성요소 루트

More information

1장. 리스트

1장. 리스트 01. 순차탐색 02. 이진탐색 03. 이진탐색트리 04. 레드블랙트리 탐색 (search) 기본적으로여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요. 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열, 연결리스트, 트리, 그래프등 탐색키데이터 순차탐색 (sequential

More information

Ch.1 Introduction

Ch.1 Introduction Tree & Heap SANGJI University Kwangman Ko (kkman@sangji.ac.kr) 트리개요 트리 (Tree) ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모-자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 kkman@sangji.ac.kr 2 트리자료구조를사용하는이유?

More information

제 1 장 기본 개념

제 1 장 기본 개념 이진트리순회와트리반복자 트리순회 (tree traversal) 트리에있는모든노드를한번씩만방문 순회방법 : LVR, LRV, VLR, VRL, RVL, RLV L : 왼쪽이동, V : 노드방문, R : 오른쪽이동 왼쪽을오른쪽보다먼저방문 (LR) LVR : 중위 (inorder) 순회 VLR : 전위 (preorder) 순회 LRV : 후위 (postorder)

More information

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft PowerPoint - 제8장-트리.pptx

Microsoft PowerPoint - 제8장-트리.pptx 제 8 강의. 트리 (Tree) 자료구조 1. 트리의개념 2. 이진트리 3. 이진트리의저장 1 트리자료구조필요성연결리스트의삽입삭제시데이터를이동하지않는장점을살리자. 연결리스트의검색시노드의처음부터찾아가야하는단점을보완하자. 데이터를중간부터찾아가는이진검색의장점을이용하자. 연결리스트의포인터를리스트의중간에두는방법? ptr 10 23 34 42 56 검색을중간부터시작하여좌우중하나로분기,

More information

05_tree

05_tree Tree Data Structures and Algorithms 목차 트리의개요 이진트리의구현 이진트리의순회 (Traversal) 수식트리 (Expression Tree) 의구현 Data Structures and Algorithms 2 트리의개요 Data Structures and Algorithms 3 트리의접근과이해 트리는계층적관계 (Hierarchical

More information

슬라이드 1

슬라이드 1 6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,

More information

입학사정관제도

입학사정관제도 자료구조 강의노트 교재 : C 로배우는쉬운자료구조 ( 개정판 ) 출판사 : 한빛미디어 (2011 년 3 월발행 ) 저자 : 이지영 소프트웨어학과원성현교수 1 8 장트리 소프트웨어학과원성현교수 93 1. 트리 트리개요 트리 (tree) 란? 리스트, 스택, 큐등은선형자료구조 (linear data structure) 인것에반해서트리는계층 (hierarchy)

More information

08장.트리

08장.트리 ---------------- T STRUTURES USING ---------------- HPTER 트리 /29 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모-자식관계의노드들로이루어짐 응용분야 : 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀 생산 팀 생산 2 팀 (a) 회사의조직도 내문서 동영상음악사진 영화예능드라마 여행 (b) 컴퓨터의폴더구조

More information

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

o 경로 (path) 트리에서사용하는용어 ~ 어떤한노드에서다른노드까지링크를통해이동했을때, 거쳐온노드들의집합. o 루트 (root) ~ 트리의가장상위에있는노드로루트는항상하나만존재 o 부모, 자식 (parent, children) ~ 링크로연결된노드중위에있는노드를부모노드, Tree & Heap SANGJI University Kwangman Ko kkman@sangji.ac.kr - 1 - o 트리 (Tree) 1. 개요 ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모 - 자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 - 2 - o 트리자료구조를사용하는이유? ~ 다른자료구조와달리비선형구조.

More information

1장. 리스트

1장. 리스트 01. 순차탐색 02. 이진탐색 03. 이진탐색트리 04. 레드블랙트리 05. AVL 트리 06. B- 트리 탐색 (search) 기본적으로여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요. 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열, 연결리스트, 트리,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 13 장. 균형탐색트리 균형탐색트리 트리의작업효율을높이기위한다양한균형트리알고리즘을비교 학습목표 트리의균형이효율에미치는영향을이해한다. AVL 트리에서균형을회복하기위한방법을이해한다. 스플레이기법을이해한다. 2-3 트리에서균형을회복하기위한방법을이해한다. 2-3-4 트리와레드블랙트리의관계를이해한다. 1 균형 균형 2 AVL G. M. Adelson-Velskii and

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현 컴퓨터디스크의디렉토리구조 인공지능에서의결정트리 (decision tree) 회사의조직 파일디렉토리구조 결정트리 ( 예 ) 골프에대한결정트리 트리의용어 노드 (node): 트리의구성요소

More information

슬라이드 1

슬라이드 1 Data Structure Chapter 7. 트리 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 트리의개념 트리 (Tree) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 정의 (1) 하나의루트 (root) 노드 (2) 다수의서브트리 (subtree) 트리는부모-자식관계의노드들로이루어짐

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 yicho@gachon.ac.kr 1 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현 컴퓨터디스크의디렉토리구조 인공지능에서의결정트리 (decision tree) 2 2 회사의조직 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 균형탐색트리 13 장. 균형탐색트리 트리의작업효율을높이기위한다양한균형트리알고리즘을비교 학습목표 트리의균형이효율에미치는영향을이해한다. AVL 트리에서균형을회복하기위한방법을이해한다. 스플레이기법을이해한다. 2-3 트리에서균형을회복하기위한방법을이해한다. 2-3-4 트리와레드블랙트리의관계를이해한다. 1 Section 01 AVL 트리 - 균형 균형 2 AVL G.

More information

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

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

Microsoft PowerPoint - 자료구조2008Chap07

Microsoft PowerPoint - 자료구조2008Chap07 제 7 장트리 7.1 트리의정의 1 Tree 비선형구조, 다차원적구조 원소마다다음에여러개의원소가존재 하나이상의노드로구성된유한집합 정의1 : 루트 (root) 라는특별한노드를가지는사이클이존재치않는그래프 (acyclic graph) 정의 2 : 하나이상의노드로구성된유한집합 루트 (root) 라는특별한노드존재 나머지노드들은다시각각의트리이면서교차하지않는분리집합 (disjoint

More information

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

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1

More information

e-비즈니스 전략 수립

e-비즈니스 전략 수립 트리 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents 학습목표 트리의개념을이해한다. 이진트리의자료구조를알아본다. 이진트리에서의순회를이해한다. 이진탐색트리의개념을이해하고연산방법을이해한다. 히프의자료구조를이해한다. 내용 트리 이진트리 이진트리의구현 이진트리의순회 이진탐색트리 히프 2/104 1. 트리 트리 (tree) 원소들간에 1:

More information

쉽게배우는알고리즘 5 장. 검색트리 IT COOKBOOK 5 장. 검색트리 나는보다응용력있는유형의수학이라는이유때문에컴퓨터과학을하고싶었다. - 로버트타잔 한빛미디어 1

쉽게배우는알고리즘 5 장. 검색트리   IT COOKBOOK 5 장. 검색트리 나는보다응용력있는유형의수학이라는이유때문에컴퓨터과학을하고싶었다. - 로버트타잔 한빛미디어 1 쉽게배우는알고리즘 5 장. 검색트리 htt://academy.hanb.co.k 5 장. 검색트리 나는보다응용력있는유형의수학이라는이유때문에컴퓨터과학을하고싶었다. - 로버트타잔 - 2 - 한빛미디어 1 학습목표 검색에서레코드와키의역할을구분한다. 이진검색트리에서의검색 삽입 삭제작업의원리를이해한다. 이진검색트리의균형이작업의효율성에미치는영향을이해하고, 레드블랙트리의삽입

More information

Chapter 08. 트리(Tree)

Chapter 08. 트리(Tree) 윤성우의열혈자료구조 : C 언어를이용한자료구조학습서 Chapter 08. 트리 (Tree) Introduction To Data Structures Using C Chapter 08. 트리 (Tree) Chapter 08-1: 트리의개요 트리의접근과이해 트리는계층적관계 (Hierarchical Relationship) 를표현하는자료구조이다. 트리의예 트리의예

More information

제 10 장 최적 이원 탐색 트리

제 10 장 최적 이원 탐색 트리 제 1 장 최적이원탐색트리 Copyright 27 DBLAB, Seoul National University 최적이원탐색트리 (1/11) 개요 정적원소들의집합에대한이원탐색트리구조 삽입이나삭제는하지않고탐색만수행 정렬된리스트 함수 Get( 프로그램 5.19 참고 ) 이용 비용측정방법 함수 Get 이용 for 루프를 l 번반복 1 5 15 리스트 (5,1,15)

More information

Algorithms

Algorithms 자료구조 & 알고리즘 리스트 (List) Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 선형리스트 연결리스트 2 선형리스트 선형리스트 선형리스트의개념 선형리스트의구현 연결리스트 3 선형리스트개념 리스트 (List) 목록, 대부분의목록은도표 (Table) 형태로표시 추상자료형리스트는이러한목록또는도표를추상화한것

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 3. 트리 3.1 트리의개요 3.2 이진트리 3.3 트리의운행 3.1 트리의개요 트리 : 그래프의일종 데이터 : 노드 순환적정의 T = {R, T 1,T 2, T n } R : 루트 T i : 서브-트리 ( 트리 ) 3.1 트리의개요 1. 노드 2. 근노드 3. 서브트리 4. 차수 5. 단노드 6. 간노드 (nonterminal node) 7. 부-노드,

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 yicho@gachon.ac.kr 1 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터

More information

슬라이드 1

슬라이드 1 Data Structure Chapter 8. 우선순위큐 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 우선순위큐추상데이터타입 우선순위큐 우선순위큐 (priority queue) 정의 : 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게됨 스택이나 FIFO 큐를우선순위큐로구현할수있음

More information

11강-힙정렬.ppt

11강-힙정렬.ppt 11 (Heap ort) leejaku@shinbiro.com Topics? Heap Heap Opeations UpHeap/Insert, DownHeap/Extract Binary Tree / Index Heap ort Heap ort 11.1 (Priority Queue) Operations ? Priority Queue? Priority Queue tack

More information

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

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

chap01_time_complexity.key

chap01_time_complexity.key 1 : (resource),,, 2 (time complexity),,, (worst-case analysis) (average-case analysis) 3 (Asymptotic) n growth rate Θ-, Ο- ( ) 4 : n data, n/2. int sample( int data[], int n ) { int k = n/2 ; return data[k]

More information

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

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table 쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table http://academy.hanb.co.kr 6장. 해시테이블 테이블 Hash Table 사실을많이아는것보다는이론적틀이중요하고, 기억력보다는생각하는법이더중요하다. - 제임스왓슨 - 2 - 학습목표 해시테이블의발생동기를이해한다. 해시테이블의원리를이해한다. 해시함수설계원리를이해한다. 충돌해결방법들과이들의장단점을이해한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 10 장. 트리 트리 리스트나스택, 큐가데이터집합을한줄로늘어세운선형자료구조라면트리는두갈래로나누어세운비선형구조이다. 비선형구조를고안한동기는바로이구조가지닌효율성때문이다. 즉, 삽입, 삭제, 검색이라는주작업에대해서선형구조보다나은시간적효율을보일수있다. 학습목표 트리와관련된용어를정확히이해한다. 이진트리의세가지순회방법의차이점을이해한다. 포인터로구현한이진탐색트리의탐색,

More information

경제통상 내지.PS

경제통상 내지.PS CONTENTS I 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 II 38 39 40 41 42 43 III 46 47 48 49 50 51 52 53 54 55 56 57 58 59 IV 62 63 64 65 66 67 68 69 V

More information

°æÁ¦Åë»ó³»Áö.PDF

°æÁ¦Åë»ó³»Áö.PDF CONTENTS I 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 II 38 39 40 41 42 43 III 46 47 48 49 50 51 52 53 54 55 56 57 58 59 IV 62 63 64 65 66 67 68 69 V

More information

C 언어 강의노트

C 언어 강의노트 C언어 (CSE2035) (15-1 Lists) Linear list 의구성, Insertion, deletion 윤용운, Ph.D. Dept. of Computer Science and Engineering Sogang University Seoul, Korea Tel: 010-3204-6811 Email : yuyoon0@sogang.ac.kr 2018-01-11

More information

<4D F736F F F696E74202D FBFACB0E120C0DAB7E1B1B8C1B6205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FBFACB0E120C0DAB7E1B1B8C1B6205BC8A3C8AF20B8F0B5E55D> 연결자료구조 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents 학습목표 연결자료구조를이해한다. 순차자료구조와연결자료구조의차이와장단점을알아본다. 연결리스트의종류와특징을알아본다. 연결자료구조를이용한다항식의덧셈연산방법을알아본다. 내용 배열연결자료구조를이해한다. 순차자료구조와연결자료구조의차이와장단점을알아본다. 연결리스트의종류와특징을알아본다.

More information

Microsoft PowerPoint - Chap5 [호환 모드]

Microsoft PowerPoint - Chap5 [호환 모드] 데이터구조 (hapter 5: Trees) 2011 년봄학기 숙명여자대학교정보과학부멀티미디어과학전공박영호 Index hapter 01: asic oncepts hapter 02: rrays and Structures hapter 03: Stacks and Queues hapter 04: Lists hapter 05: Trees hapter 06: Graphs

More information

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

Microsoft PowerPoint - 제9장-트리의응용.pptx 제 9 강의. 트리의탐색 1. 이진트리탐색알고리즘 2. 쓰레드 (Threaded) 이진트리 3. 이진트리를다루는알고리즘 1 1. 이진트리탐색알고리즘 트리의탐색 (traversal) 은트리의각노드를방문하는작업을말한다. ( 왜방문할까요?) 다음과같은방법들을생각해볼수있다. 방법 1) 레벨순 : 레벨이낮은순으로방문 A B C D E F G H 3가지다른방법이나올수있다.

More information

q 이장에서다룰내용 1 연결자료구조방식 2 단순연결리스트 3 원형연결리스트 4 이중연결리스트 3 다항식의연결자료구조표현 2

q 이장에서다룰내용 1 연결자료구조방식 2 단순연결리스트 3 원형연결리스트 4 이중연결리스트 3 다항식의연결자료구조표현 2 연결자료구조표현방식 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 연결자료구조방식 2 단순연결리스트 3 원형연결리스트 4 이중연결리스트 3 다항식의연결자료구조표현 2 q 연결자료구조 v 순차자료구조의문제점 삽입연산이나삭제연산후에연속적인물리주소를유지하기위해서원소들을이동시키는추가적인작업과시간소요 Ø 원소들의이동작업으로인한오버헤드는원소의개수가많고삽입

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

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

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 큐 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 1. 큐 v 큐 (Queue) 데이터의삽입과삭제가양쪽끝에서일어나는자료구조

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템 ( 여기서의우선순위는대개사건의시각이다.)

More information

제 9 장 우선순위 큐

제 9 장 우선순위 큐 제 9 장 우선순위큐 Copyright 007 DBLAB, Seoul National University 한쪽끝과양쪽끝우선순위큐 우선순위큐 (priority queue) - 각원소가연관된우선순위를갖고있는원소들의모임 최소우선순위큐에서의연산 - SP: 최소우선순위를가진원소의반환 - SP: 임의의우선순위를가진원소의삽입 - SP3: 최소우선순위를가진원소의삭제 최대우선순위큐에서의연산

More information

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E > 제 7 강의. 고급연결리스트 1. 원형연결리스트 2. 이중연결리스트 3. 연결리스트알고리즘 1 1. 원형연결리스트 (Circularly Linked Lists) 원형연결리스트란? 연결리스트의맨끝노드를첫번째노드와연결시켜서원형으로만든리스트 단순연결리스트 (Singly Linked List) 불편한점 - 연결리스트의노드포인터를알고있을때첫번째노드는바로찾아갈수있지만마지막노드는리스트전체를따라가면서끝을찾아가야한다

More information

10. 다차원공간화일 DBLAB, SNU v 다차원데이타 u 다차원데이타 (multidimensional data) 전통적인 1차원데이타레코드가아니라 CAD (computer aided design) 나지리정보시스템 (geographical information sys

10. 다차원공간화일 DBLAB, SNU v 다차원데이타 u 다차원데이타 (multidimensional data) 전통적인 1차원데이타레코드가아니라 CAD (computer aided design) 나지리정보시스템 (geographical information sys 10. 다차원공간화일 v 다차원데이타 u 다차원데이타 (multidimensionl dt) 전통적인 1차원데이타레코드가아니라 CAD (computer ided design) 나지리정보시스템 (geogrphicl informtion system) 에서의선 (line), 면 (plne), 위치 (loction) 와같은데이타 다차원데이타를나타내는 (x, y) 또는

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 트리 10 장. 트리 리스트나스택, 큐가데이터집합을한줄로늘어세운선형자료구조라면트리는두갈래로나누어세운비선형구조이다. 비선형구조를고안한동기는바로이구조가지닌효율성때문이다. 즉, 삽입, 삭제, 검색이라는주작업에대해서선형구조보다나은시간적효율을보일수있다. 학습목표 트리와관련된용어를정확히이해한다. 이진트리의세가지순회방법의차이점을이해한다. 포인터로구현한이진탐색트리의탐색,

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 우선순위큐 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

Chap 6: Graphs

Chap 6: Graphs 그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]

More information

09J1_ _R.hwp

09J1_ _R.hwp 상수삽입전이시간을가지는양단우선순위큐 217 DOI: 10.3745/KIPSTA.2009.16-A.3.217 상수삽입전이시간을가지는양단우선순위큐 정해재 요 약 우선순위큐는스케줄링, 정렬, 유전자검색과같은우선순위에따른검색, 최단거리계산과같은응용에사용될수있다. 본논문에서제안하는배열을이용한양단우선순위큐자료구조는삽입과삭제연산에각각 O(1) 전이시간과 O(logn) 시간이걸린다.

More information

06장.리스트

06장.리스트 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :

More information

Microsoft PowerPoint Merging and Sorting Files.ppt

Microsoft PowerPoint Merging and Sorting Files.ppt 자료처리 () 006 년봄학기문양세강원대학교컴퓨터과학과 정렬 / 합병의개요 정렬의종류 : 내부정렬, 외부정렬 내부정렬 (internal sorting) 데이타가적어서메인메모리내에모두저장시켜정렬가능할때사용함 레코드의판독 (read) 및기록 (write) 에걸리는시간이문제가되지않음 외부정렬 (external sorting) 데이타가많아서메인메모리의용량을초과하여보조기억장치

More information

11. 텍스트를위한 화일 DBLAB, SNU 텍스트를위한화일 u 텍스트데이타로구성된문서 (documents) 나텍스트필드 (text field) 를포함하고있는레코드검색에이용할수있는화일 텍스트 (text): 긴문자열로구성된데이타 ( 예 ) 학생의자기소개, 신문기사, 사전

11. 텍스트를위한 화일 DBLAB, SNU 텍스트를위한화일 u 텍스트데이타로구성된문서 (documents) 나텍스트필드 (text field) 를포함하고있는레코드검색에이용할수있는화일 텍스트 (text): 긴문자열로구성된데이타 ( 예 ) 학생의자기소개, 신문기사, 사전 . 텍스트를위한 화일 텍스트를위한화일 텍스트데이타로구성된문서 (docments) 나텍스트필드 (text field) 를포함하고있는레코드검색에이용할수있는화일 텍스트 (text): 긴문자열로구성된데이타 ( 예 ) 학생의자기소개, 신문기사, 사전의용어, 인터넷사이트에대한설명정보 키워드 (keyword): 텍스트데이타에대한탐색키값 하나의레코드를식별하기위하여텍스트필드는여러개의키워드가사용될수있음.

More information

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

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를 리스트에대한설명중틀린것은 구조체도리스트의요소가될수있다 리스트의요소간에는순서가있다 리스트는여러가지방법으로구현될수있다 리스트는집합과동일하다 다음은순차적표현과연결된표현을비교한것이다 설명이틀린것은 연결된표현은포인터를가지고있어상대적으로크기가작아진다 연결된표현은삽입이용이하다 순차적표현은연결된표현보다액세스시간이많이걸린다 연결된표현으로작성된리스트를 개로분리하기가쉽다 다음은연결리스트에서있을수있는여러가지경우를설명했는데잘못된항목은

More information

14장.탐색

14장.탐색 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 탐색 1/28 탐색 (search) 이란? 여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열,

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

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

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ 00. 리스트 자료구조 01. 링크드 리스트 02. 더블 링크드 리스트 03. 환형 링크드 리스트 리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : (

More information

1장. 리스트

1장. 리스트 01. 링크드리스트 02. 더블링크드리스트 03. 환형링크드리스트 배열과는달리유연하게크기를바꿀수있는자료구조 각노드는다음노드를가리키는포인터를가짐. 각노드를다음노드를가리키는포인터로연결하여만든리스트. Single Linked List 라고도함. 링크드리스트의첫번째노드를헤드 (Head), 마지막노드를테일 (Tail) 이라고한다. C 언어로표현하는링크드리스트의노드 typedef

More information

5 장 트 리

5 장  트 리 5 장 트리 Copyright 2007 DBLAB, Seoul National University 트리구조 Copyright 2007 DBLAB, Seoul National University 2 트리 트리 : 하나이상의노드 (node) 로이루어진유한집합 1 하나의루트 (root) 노드 2 나머지노드들은 n( 0) 개의분리집합 T 1, T 2,, T n 으로분할

More information

CONTENTS C U B A I C U B A 8 Part I Part II Part III Part IV Part V Part VI Part VII Part VIII Part IX 9 C U B A 10 Part I Part II Part III Part IV Part V Part VI Part VII Part VIII Part IX 11 C U B

More information

00-1표지

00-1표지 summary _I II_ summary _III 1 1 2 2 5 5 5 8 10 12 13 14 18 24 28 29 29 33 41 45 45 45 45 47 IV_ contents 48 48 48 49 50 51 52 55 60 60 61 62 63 63 64 64 65 65 65 69 69 69 74 76 76 77 78 _V 78 79 79 81

More information

고급자료구조

고급자료구조 배상원 Binary Search Tree (BST) Balanced BSTs Red-Black Tree Splay Tree Geometric Search Trees Range Tree Interval Tree Segment Tree Binary Indexed Tree Definition (recursive) An empty tree is a binary tree

More information

Microsoft PowerPoint - Chap5 [호환 모드]

Microsoft PowerPoint - Chap5 [호환 모드] 5.3 Binary Tree Traversal Tree 의각 node 를한번씩방문하는알고리즘 각 node 와그 node 의 subtree 들을동등하게취급하면 6 개의 traversal 조합이있다. (L: Left 로움직임, V: 노드를 visiting, R: Right 로움직임 ) (1) LVR, (2) LRV, (3) VLR, (4) VRL, (5) RVL,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint - chap4_list

Microsoft PowerPoint - chap4_list Chap. 4 : 리스트 (list) 2007 학년도 2 학기 리스트 1. 리스트개념 ~ 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 ~ 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 ~ 요일 : ( 일요일, 월요일,, 토요일 ) ~ 한글자음의모임 : (ᆨ,ᆫ,,ᄒ) ~ 핸드폰의문자메시지리스트

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

Chap 6: Graphs

Chap 6: Graphs AOV Network 의표현 임의의 vertex 가 predecessor 를갖는지조사 각 vertex 에대해 immediate predecessor 의수를나타내는 count field 저장 Vertex 와그에부속된모든 edge 들을삭제 AOV network 을인접리스트로표현 count link struct node { int vertex; struct node

More information

우루과이 내지-1

우루과이 내지-1 U R U G U A Y U r u g u a y 1. 2 Part I Part II Part III Part IV Part V Part VI Part VII Part VIII 3 U r u g u a y 2. 4 Part I Part II Part III Part IV Part V Part VI Part VII Part VIII 5 U r u g u a

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

슬라이드 제목 없음

슬라이드 제목 없음 Chapter 5: TREES Trees Trees Def) a tree is finite set of one or more nodes such that 1) there is a special node (root) 2) remaining nodes are partitioned into n 0 disjoint trees T 1,T 2,,T n where each

More information

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

리스트연산, 검색 + 삽입 + 삭제 새로운항목을리스트의처음, 중간, 끝에추가. 기존의항목을리스트의임의의위치에서삭제. 모든항목을삭제. 기존항목을대치 (replace). 리스트가특정항목을가지고있는지를검색 (search). 리스트의특정위치의항목을반환. 리스트안의항목의개수를센 Linked List 2014 2 학기 SANGJI University 리스트 (list) 1. 리스트개념 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 핸드폰의문자메시지리스트

More information

세계 비지니스 정보

세계 비지니스 정보 - i - ii - iii - iv - v - vi - vii - viii - ix - 1 - 2 - 3 - - - - - - - - - - 4 - - - - - - 5 - - - - - - - - - - - 6 - - - - - - - - - 7 - - - - 8 - 9 - 10 - - - - - - - - - - - - 11 - - - 12 - 13 -

More information

슬라이드 1

슬라이드 1 Linked List 2015 2 학기 SANGJI University 1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 핸드폰의문자메시지리스트

More information

6장정렬알고리즘.key

6장정렬알고리즘.key 6 : :. (Internal sort) (External sort) (main memory). :,,.. 6.1 (Bubbble Sort).,,. 1 (pass). 1 pass, 1. (, ), 90 (, ). 2 40-50 50-90, 50 10. 50 90. 40 50 10 비교 40 50 10 비교 40 50 10 40 10 50 40 10 50 90

More information

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

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

More information

쉽게 배우는 알고리즘 강의노트

쉽게 배우는 알고리즘 강의노트 쉽게배우는알고리즘 장. 정렬 Sorting http://www.hanbit.co.kr 장. 정렬 Sorting 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고,

More information

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

리스트구현방법 배열 (array) 을이용하는방법 구현이간단 삽입, 삭제동작에따른원소이동. 항목의개수제한, 정적기억공간할당. 메모리낭비, 오버플로우 연결리스트 (linked list) 를이용하는방법 구현이복잡 삽입, 삭제가효율적 크기가제한되지않음 Lecture 03_Li Linked List 2011 2 학기 SANGJI University 리스트 (list) 1. 리스트개념 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ) 핸드폰의문자메시지리스트

More information

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 - 스택 (stack) SANGJI University Kwangman Ko o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 - o 스택의특징 ~ 모든원소의삽입과삭제가 top 이라는자료구조의한쪽끝에서만수행되는제한된리스트구조 ~ 후입선출 (Last-In-First-Out, LIFO) 방식 가장마지막에입력된자료가가장먼저출력 o 스택의동작 ~ top 에서만삽입

More information

[96_RE11]LMOs(......).HWP

[96_RE11]LMOs(......).HWP - i - - ii - - iii - - iv - - v - - vi - - vii - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

More information

4.1 관계

4.1 관계 5 장트리 트리 (tree) 정보의항목들이가지 (branch) 로연결될수있게데이터가조직되는것, 예 ) 그림 5.1 정의 : 트리는 1 개이상의노드로이루어진유한집합으로서 1 root node 2 나머지노드들은 n( 0) 개의분리집합 (disjoint set) T 1, T 2,, T n 으로분리, T i 는각각트리로서 subtree 노드 : 정보항목 + 다른노드로뻗어진가지

More information

슬라이드 1

슬라이드 1 컬렉션프레임워크 (Collection Framework) 의정의 - 다수의데이터를쉽게처리할수있는표준화된방법을제공하는클래스들 - 데이터의집합을다루고표현하기위한단일화된구조 (architecture) - JDK 1.2 이전까지는 Vector, Hashtable, Properties와같은컬렉션클래스로서로다른각자의방식으로처리 - 컬렉션프레임워크는다수의데이터를다루는데필요한다양하고풍부한클래스들을제공하므로프로그래머의부담을상당부분덜어준다.

More information

israel-내지-1-4

israel-내지-1-4 israel-내지-1-4 1904.1.1 12:49 AM 페이지1 mac2 2015. 11 Contents S T A T E O F I S R A E L 8 Part I Part II Part III Part IV Part V Part VI Part VII Part VIII 9 S T A T E O F I S R A E L 10 Part I Part

More information

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

Lab 5. 실습문제 (Double linked list)-1_해답.hwp Lab 5. Doubly-linked list 의구현 실험실습일시 : 2009. 4. 13. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 19. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Doubly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Doubly-linked list의각함수를구현한다.

More information