조 병 규 Software Quality Lab. 한 국 교 통 대 학 교

Slides:



Advertisements
Similar presentations
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
Advertisements

자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
그래프.
2-4.세계속의 우리 경제.
Vision System Lab, Sang-Hun Han
Power C++ 제6장 포인터와 문자열.
8. 파일 인덱스: 탐색트리 (Search Tree)
C++ Espresso 제1장 기초 사항.
3 장 stack and queue.
제 6 장 그래프 6.1 그래프의 정의 6.2 용어 및 표현법 6.3 그래프의 표현 방법 6.4 그래프의 순회와 신장 트리
Internet Computing KUT Youn-Hee Han
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
자료구조 실습 (03분반)
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
6장 트리.
8. 객체와 클래스 (기본).
Internet Computing KUT Youn-Hee Han
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Internet Computing KUT Youn-Hee Han
CHAP 10:그래프 순천향대학교 하상호.
CHAP 10 : 그래프 C로 쉽게 풀어쓴 자료구조 생능출판사 학기 데이터구조.
CHAP 10:그래프 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 10 : 그래프 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 62).
제5장 트리.
연결리스트 (Linked List) 충북대학교 컴퓨터공학과 서 영 훈.
CHAP 7:트리.
강의 #7 트리(Tree).
쉽게 배우는 알고리즘 5장. 검색트리
7 스택.
10장 템플릿과 표준 템플릿 라이브러리(STL)
스택(stack) SANGJI University Kwangman Ko
제 6 장 그래프.
강의 #6 큐(Queue).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
Chapter 10 그래프(graph) SANGJI University Kwangman KO
C ++ 프로그래밍 시작.
스택(Stack) 김진수
그래프(graph) 연결되어 있는 객체 간의 관계를 표현하는 자료구조 가장 일반적인 자료구조 형태
IT CookBook, 자바로 배우는 쉬운 자료구조
Tree & Heap SANGJI University Kwangman Ko
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
CHAPTER 6 그래프.
자료구조(SCSC) Data Structures
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
조 병 규 Software Quality Lab. 한국교통대학교
루프와 카운트 Looping and counting
그래프의 용어 알고리즘 수업자료 김정현.
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
그래프와 트리 (Graphs and Trees)
5. 논리적 자료표현 : 구조체.
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
C++ Espresso 제13장 입출력과 파일처리.
CHAP 10 : 그래프.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
10장 템플릿과 표준 템플릿 라이브러리(STL)
Chapter 07 트리.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
자료구조 자료구조의 개요 배열 선형 리스트 스택 큐 트리.
Presentation transcript:

조 병 규 Software Quality Lab. 한 국 교 통 대 학 교 NonLinear Structure 조 병 규 Software Quality Lab. 한 국 교 통 대 학 교

graph 비선형 자료 구조를 표현한 것 점(vertex)들과 이들을 연결하는 선(edge)들의 집합 일반적으로 점과 선에 고유한 명칭을 부여함 G = {V(G), E(G)} SQ LAB.

Graph example a 1 b 2 c 3 4 6 d 5 e f G = {{a, b, c, d, e, f}, {1, 2, 3 , 4, 5, 6}} SQ LAB.

용어 정리 그래프의 차수(order of graph) 그래프를 구성하는 점(vertex)의 수     그래프의 복잡함은 반드시 그래프의 차수에 관계되는 것은 아니나, 일반적으로 차수가 높으면 높을수록 그래프가 복잡해진다. 선의 종류 무방향선(undirected edge)        방향이 없는 선분으로 시작점과 종착점 관계를 두지않고,       (vertex_m, vertex_n) 또는 (vertex_n, vertex_m)으로 표현       ⓜ────────ⓝ    (m,n) 또는 (n,m) 방향선(directed edge)       선의 방향이 있는 것으로 반드시 (시작점, 종착점)으로 표현한다.        ⓜ───────〉ⓝ    (m,n) SQ LAB.

용어 정리 점의 인접(adjacent) (vertex_m, vertex_n)인 경우 vertex_m과 vertex_n는 서로 인접 (adjacent)되었다고  함 루프(loop)    자기 자신의 점에 연결된 선, 즉 (vertex_n, vretex_n) 패스(path)    임의의 점에서 다른 점까지 연결된 일련의 선의 집합 P(시작점, 종착점)으로 표현 패스 길이(path length)    임의의 패스를 이루는 선분의 개수이다. 단순 패스(simple path)    패스 내에 동일한 선분이 중복되지 않는 패스이다. 싸이클(cycle)    시작점과 종착점이 같고, 동일한 선분이 두 번 이상 존재하지 않는 패스 SQ LAB.

그래프의 종류 방향 그래프와 무방향 그래프 단순 그래프와 다중 그래프 연결 그래프와 비연결 그래프 가중 그래프와 비가중 그래프 완전 그래프 SQ LAB.

방향 그래프와 무방향 그래프 방향 그래프(directed graph, di-graph)   그래프를 구성하는 모든 선분이 방향 선분 (directed edge)으로 구성된 그래프 무방향 그래프(undirected graph)    그래프를 구성하는 모든 선분이 무방향 선분 (undirected edge)로 구성된 그래프 SQ LAB.

(예) 방향 그래프와 무방향 그래프 방향 그래프 a b c d e f 무방향 그래프 a b c d e f SQ LAB.

단순 그래프와 다중 그래프 단순 그래프(simple graph) 루프(loop)가 없고, 두 점을 연결하는 선분이 하나로만 구성 다중 그래프(multi-graph)    단순 그래프가 아닌 것 SQ LAB.

(예) 단순 그래프와 다중 그래프 단순 그래프 a b c d e f 다중 그래프 a b c d e f SQ LAB.

연결 그래프와 비연결 그래프 연결 그래프(connected graph) 그래프를 구성하는 점들에 대하여    그래프를 구성하는 점들에 대하여 모든 임의의 두 점 사이에 패스가 존재하는 그래프 비연결 그래프(disconnected graph) 그래프를 구성하는 점들에 대하여 패스가 존재하지 않는 것도 있는 그래프 SQ LAB.

(예) 연결 그래프와 비연결 그래프 연결 그래프 a b c d e f 비연결 그래프 a b c d e f SQ LAB.

가중 그래프와 비가중 그래프 가중 그래프(weighted graph, network) 선분에 임의의 값을 가진 그래프    선분에 임의의 값을 가진 그래프 비가중 그래프(unweight graph)    선분에 값이 부여되지 않은 그래프 SQ LAB.

(예) 가중 그래프와 비가중그래프 a b c d e f a b c d e f 가중 그래프 비가중 그래프 10 10 10 10 SQ LAB.

완전 그래프(complete graph) 그래프를 구성하는 모든 점들이 서로 인접된 그래프 점의 수가 n개인 완전 그래프에서의 선분의 수 = n(n-1)/2 SQ LAB.

(예) 완전 그래프 a b c d vetex 수 = 4             edge 수 = 4(4-1)/2=6 SQ LAB.

그래프의 표현 인접 행렬(Adjacency Matrx) 선분 리스트(Edge List) 인접 리스트(Adjacency List) SQ LAB.

인접 행렬로의 표현 - 정점의 수가 n일 경우 n x n의 2차원 배열을 확보하여, 두 정점 사이의 접속 관계를 설정된 기호로 표시 - 정점의 수 : n 배열  A = n x n 1 : (u, v) 존재 A(u, v) 0 : (u, v) 존재 안함 SQ LAB.

(예) 인접 행렬로의 표현 a b c d e f a b c d e f a b c d e f 방향 그래프 무방향 그래프 8 4 u v a b c d e f 1 d e f a b c u v a b c d e f 1 무방향 그래프 d e f 8 4 a b c 가중 그래프 u v a b c d e f 8 2 4 1 5 3 6 5 2 1 3 6 d e f SQ LAB.

선분 리스트 (Edge List)로의 표현 각 선분의 두 정점을 (시작점, 종착점, 가중치1,가중치2,∙ ∙ ∙,가중치n) 로 표현 SQ LAB.

(예) 선분 리스트로의 표현 : 방향 그래프 a b c d e f 방향 그래프 [방법 1] [방법 2] 시작자료 선분자료 시작점 종착점 포인터 a b 1 d 3 2 c e 4 5 f 7 6 / 8 SQ LAB.

(예) 선분 리스트로의 표현 : 가중 그래프 a b c d e f 8 4 가중 그래프 5 2 1 3 6 [방법 1] [방법 2] 시작자료 선분자료 시작점 종착점 가중치 포인터 a b 8 1 d 2 3 c 4 e 5 f 6 7 / SQ LAB.

인접 리스트 (Adjacency List )로의 표현 각 정점에 인접된 정점(들)의 집합을 각 각의 링크드 리스트로 표현 노드구조(1) 종착점 링크 노드구조(2) 가중치(들) SQ LAB.

(예) 인접 리스트로의 표현 : 방향 그래프 a b c d e f 방향 그래프 시작점 링크 (100) (120) a b d \ (200) c (300) e (400) (420) f (500) SQ LAB.

(예) 인접 리스트로의 표현 : 무방향 그래프 a b c d e f 무방향 그래프 시작점 링크 (100) (120) a b d \ (200) (220) (240) (260) c e f (300) (400) (420) (500) (520) (540) (600) (620) SQ LAB.

(예) 인접 리스트로의 표현 : 가중 그래프 a b c d e f 8 4 가중 그래프 5 2 1 3 6 시작점 링크 (100) (120) a b 8 d 2 \ (200) c 4 (300) e 3 (400) (420) 1 f 6 (500) 5 SQ LAB.

그래프의 순회 (Breadth First traverse) 깊이 우선 순회 (Depth First traverse) 넓이 우선 순회넓이 우선 순회 (Breadth First traverse) SQ LAB.

깊이 우선 순회 ① 시작할 노드(start vertex) 결정(첫 번째 방문 노드) ② 방문 ③ 방문 장소에 수록 ④ 방문한(또는 방문된) 노드와 인접된 노드들 중에서 하나 선택 ⑤ 선택된 노드가 이미 방문되었으면 다른 인접 노드 선택(반복) ⑥ 선택된 노드 방문 ⑦ 방문 장소에 수록 ⑧ GoTo④ 방문된 노드를 수록할 장소가 확보되어 있어야 하며, 미처리 인접 노드는 스택(Stack)에 저장함 SQ LAB.

(예) 깊이 우선 순회 a b c d e f 방문 노드 Stack Push/Pop 상태 a b c e f d 시작 노드 d e f 방문 노드 Stack Push/Pop 상태 a b c e f   d 인접노드 수 2 : push(a) 인접노드 수 3 : push(b) 인접노드 수 0 : pop(b) 인접노드 수 3 : push(e) f의 인접 노드 : pop(e) 모두 방문됨 d의 인접 노드 : pop(a) a의 인접 노드 : pop(/) b, a e, a / SQ LAB.

넓이 우선 순회 ① 시작할 노드 결정 또는 방문된 노드 중에서 하나 선택 ② 방문 ③ 방문 장소에 수록 ④ 방문한 노드와 인접된 노드들 중 하나 선택  ⑤ 선택된 노드가 이미 방문되었으면 다른 노드 선택(반복) ⑥ 선택된 노드 방문 ⑦ 방문 장소에 수록 ⑧ 한 노드에 대한 인접 노드를 모두 방문했으면 GoTo①    아니면 GoTo④ 방문된 노드를 수록할 장소가 확보되어 있어야 하고, 방문된 인접 노드는 큐(Queue)에 저장한다. SQ LAB.

(예) 넓이 우선 순회 a b c d e f 방문 노드 Queue 동 작 상태 a b d c e f 시작 노드 d e f 방문 노드 Queue 동  작 상태 a b d   c e f 선택 노드 b             Insert(b) 선택 노드 d             Insert(d) a의 인접 노드 모두 방문 delete(b) 선택 노드 c             Insert(c) 선택 노드 e              Insert(e) 선택 노드 f             Insert(f) b의 인접 노드 모두 방문 delete(d) d의 인접 노드 모두 방문 delete(c) c의 인접 노드 없슴      delete(e) e의 인접 노드 모두 방문 delete(f) f의 인접 노드 모두 방문 d,b c,d e,c,d f,e,c,d f,e,c f,e / SQ LAB.

트리(tree) SQ LAB.

뿌리를 가진 트리(Rooted Tree) ① 뿌리 노드(root node)가 존재하며 Root Node : in-degree = 0 ② 뿌리 노드를 제외한 n개의 노드들은 서로 분리된 집합 T1,T2,...,Tn으로 분할되며,      T1,T2,...,Tn도 각각 하나의 트리로 구성되며, 이들을 부트리(subtree)라 함. - 트리의 일반적 정의를 모두 수용하며 추가적으로 뿌리(근:root : indegree = 0)라는 특별한 노드(node)를 가지고 있으며, 트리를 구성하는 각 선분에 방향이 존재하며, 인접된 두 노드의 관계가 상하관계로 구성되어 계층적 구조(hierarchical structure)로 형성 - 뿌리를 가진 트리는 뿌리 노드로부터 시작하여 구성된 나무의 모양으로 표현 이때, 일반적으로 선분의 방향 표시는 생략 SQ LAB.

(예) 뿌리를 가진 트리 SQ LAB.

용어 정리 SQ LAB.

용어 정리 SQ LAB.

용어 정리 SQ LAB.

트리 종류 SQ LAB.

트리 종류 SQ LAB.

트리 종류 SQ LAB.

트리 순회 SQ LAB.

(예) 트리 순회 SQ LAB.

이진 트리(Binary Tree) SQ LAB.

이진 트리 종류 SQ LAB.

(예) 이진트리 종류 SQ LAB.

이진 트리 순회 SQ LAB.

(예) 이진트리 순회 SQ LAB.

이진 트리의 구현 SQ LAB.

quiz : 이진 트리의 구현 다음과 같은 자료를 처리할 수 있는 이진 트리를 - Linked list와 배열로 구현하시오. 번호 성명 SQ LAB.

이진 트리의 구현 (linked list) /*001*/ // BinaryTreeTraverse00 /*002*/ // complete or full binary tree creation and traverse /*003*/ // traverse : preOder, inOrder, postOrder /*004*/ /*005*/ #include <iostream> /*006*/ /*007*/ using namespace std; /*008*/ /*009*/ const int Max = 101; /*010*/ const int nil = 0; /*011*/ /*012*/ struct nodeType { /*013*/ nodeType *left_link; /*014*/ char *number; /*015*/ char *name; /*016*/ nodeType *right_link; /*017*/ }; /*018*/ SQ LAB.

/*019*/ class btree_class /*020*/ { /*021*/ private: /*020*/ { /*021*/ private: /*022*/ nodeType *root; /*023*/ nodeType *parent; /*024*/ nodeType *current; /*025*/ public: /*026*/ btree_class() /*027*/ { /*028*/ root = new nodeType; /*029*/ root->left_link = root->right_link = nil; /*030*/ }; /*031*/ int btree_set(); /*032*/ void btree_preorder(); /*033*/ void preOrder(nodeType* root); /*034*/ void btree_inorder(); /*035*/ void inOrder(nodeType* root); /*036*/ void btree_postorder(); /*037*/ void postOrder(nodeType* root); /*038*/ }; /*039*/ SQ LAB.

/*040*/ int btree_class::btree_set() /*041*/ { /*041*/ { /*042*/ FILE *input_file; /*043*/ char *buffer; /*044*/ int i; /*045*/ nodeType *parent; /*046*/ nodeType *new_node; /*047*/ nodeType *queue[Max]; /*048*/ int rear=0,front=0; /*049*/ char left_or_right; /*050*/ /*051*/ input_file = fopen("btree.dat","r"); /*052*/ if(input_file == NULL) /*053*/ { /*054*/ cout << " btree.dat not opened"; /*055*/ return 0; /*056*/ }; /*057*/ buffer = new char[18]; /*058*/ fgets(buffer,18,input_file); SQ LAB.

/*059*/ if(feof(input_file)) /*060*/ { /*060*/ { /*061*/ cout << "Have no node in the 'btree.dat'"; /*062*/ root = nil; /*063*/ return 9; /*064*/ }; /*065*/ root->number = new char[5]; /*066*/ for(i=0;i<4;i++) root->number[i] = buffer[i]; /*067*/ root->number[i] = '\0'; /*068*/ root->name = new char[13]; /*069*/ for(i=0;buffer[i+4]!='\n';i++) root->name[i] = buffer[i+4]; /*070*/ root->name[i] = '\0'; /*071*/ rear = front = 1; /*072*/ queue[rear] = root; /*073*/ SQ LAB.

/*074*/ buffer = new char[18]; /*075*/ fgets(buffer,18,input_file); /*076*/ left_or_right = 'l'; /*077*/ while(!feof(input_file)) /*078*/ { /*079*/ new_node = new nodeType; /*080*/ new_node->left_link = new_node->right_link = nil; /*081*/ new_node->number = new char[5]; /*082*/ for(i=0;i<4;i++) new_node->number[i] = buffer[i]; /*083*/ new_node->number[i] = '\0'; /*084*/ new_node->name = new char[13]; /*085*/ for(i=0;buffer[i+4]!='\n';i++) new_node->name[i] = buffer[i+4]; /*086*/ new_node->name[i] = '\0'; /*087*/ SQ LAB.

/*088*/ if(left_or_right == 'l') /*089*/ { /*089*/ { /*090*/ parent = queue[front]; /*091*/ front = front + 1; /*092*/ parent->left_link = new_node; /*093*/ left_or_right = 'r'; /*094*/ } /*095*/ else /*096*/ { /*097*/ parent->right_link = new_node; /*098*/ left_or_right = 'l'; /*099*/ }; /*100*/ rear = rear + 1; /*101*/ queue[rear] = new_node; /*102*/ /*103*/ buffer = new char[18]; /*104*/ fgets(buffer,18,input_file); /*105*/ }; /*106*/ return 1; /*107*/ }; /*108*/ SQ LAB.

/*109*/ void btree_class::btree_preorder() /*110*/ { /*110*/ { /*111*/ system("cls"); /*112*/ cout << "\n ==== pre order traverse ====\n"; /*113*/ /*114*/ preOrder(root); /*115*/ /*116*/ cout << "\n\n Type <Enter> : "; /*117*/ cin.get(); /*118*/ }; /*119*/ /*120*/ void btree_class::preOrder(nodeType* root) /*121*/ { /*122*/ if(root!=nil) /*123*/ { /*124*/ cout << "\n number : " << root->number /*125*/ << " name : " << root->name; /*126*/ /*127*/ preOrder(root->left_link); /*128*/ preOrder(root->right_link); /*129*/ } /*130*/ } /*131*/ SQ LAB.

/*132*/ void btree_class::btree_inorder() /*133*/ { /*133*/ { /*134*/ system("cls"); /*135*/ cout << "\n\n ===== in order traverse =====\n"; /*136*/ /*137*/ inOrder(root); /*138*/ /*139*/ cout << "\n\n Type <Enter> : "; /*140*/ cin.get(); /*141*/ }; /*142*/ /*143*/ void btree_class::inOrder(nodeType* root) /*144*/ { /*145*/ if(root!=nil) /*146*/ { /*147*/ inOrder(root->left_link); /*148*/ /*149*/ cout << "\n number : " << root->number /*150*/ << " name : " << root->name; /*151*/ /*152*/ inOrder(root->right_link); /*153*/ } /*154*/ } /*155*/ SQ LAB.

/*159*/ cout << "\n\n === post order traverse ===\n"; /*160*/ /*157*/ { /*158*/ system("cls"); /*159*/ cout << "\n\n === post order traverse ===\n"; /*160*/ /*161*/ postOrder(root); /*162*/ }; /*163*/ /*164*/ void btree_class::postOrder(nodeType* root) /*165*/ { /*166*/ if(root!=nil) /*167*/ { /*168*/ postOrder(root->left_link); /*169*/ postOrder(root->right_link); /*170*/ /*171*/ cout << "\n number : " << root->number /*172*/ << " name : " << root->name; /*173*/ } /*174*/ } /*175*/ SQ LAB.

/*178*/ btree_class object; /*179*/ /*180*/ if(object.btree_set()==1) /*176*/ void main() /*177*/ { /*178*/ btree_class object; /*179*/ /*180*/ if(object.btree_set()==1) /*181*/ { /*182*/ object.btree_preorder(); /*183*/ object.btree_inorder(); /*184*/ object.btree_postorder(); /*185*/ } /*186*/ /*187*/ cout << "\n\n\n Good bye(^@^)\n Type <Enter> : "; /*188*/ cin.get(); /*189*/ } } SQ LAB.

이진 트리의 구현 (array) /*001*/ // BinaryTreeArray02 /*002*/ // complete or full binary tree creation and inorder traverse /*003*/ /*004*/ #include <iostream> /*005*/ /*006*/ using namespace std; /*007*/ /*008*/ const int Max = 101; /*009*/ /*010*/ struct nodeType { /*011*/ char *number; /*012*/ char *name; /*013*/ }; /*014*/ SQ LAB.

/*015*/ class binaryTreeClass /*016*/ { /*017*/ private: /*016*/ { /*017*/ private: /*018*/ nodeType numberNname[Max]; /*019*/ int arrayMax; /*020*/ public: /*021*/ int binaryTreeSetting(); /*022*/ void binaryTreeInorder(); /*023*/ }; /*024*/ SQ LAB.

/*025*/ int binaryTreeClass::binaryTreeSetting() /*026*/ { /*026*/ { /*027*/ FILE *inputFile; /*028*/ char *buffer; /*029*/ int i; /*030*/ /*031*/ inputFile = fopen("btree.dat","r"); /*032*/ if(inputFile == NULL) /*033*/ { /*034*/ cout << " btree.dat not opened"; /*035*/ return 0; /*036*/ }; /*037*/ buffer = new char[18]; /*038*/ fgets(buffer,18,inputFile); /*039*/ if(feof(inputFile)) /*040*/ { /*041*/ cout << "Have no node in the 'btree.dat'"; /*042*/ return 9; /*043*/ }; SQ LAB.

/*044*/ numberNname[1].number = new char[5]; /*045*/ for(i=0;i<4;i++) /*046*/ numberNname[1].number[i] = buffer[i]; /*047*/ numberNname[1].number[i] = '\0'; /*048*/ numberNname[1].name = new char[13]; /*049*/ for(i=0;buffer[i+4]!='\n';i++) /*050*/ numberNname[1].name[i] = buffer[i+4]; /*051*/ numberNname[1].name[i] = '\0'; /*052*/ SQ LAB.

/*053*/ buffer = new char[18]; /*054*/ fgets(buffer,18,inputFile); /*055*/ arrayMax = 1; /*056*/ while(!feof(inputFile)) /*057*/ { /*058*/ arrayMax = arrayMax + 1; /*059*/ if(arrayMax > Max) /*060*/ { /*061*/ cout << "overflow error : " << arrayMax; /*062*/ return 8; /*063*/ } /*064*/ numberNname[arrayMax].number = new char[5]; /*065*/ for(i=0;i<4;i++) /*066*/ numberNname[arrayMax].number[i] = buffer[i]; /*067*/ numberNname[arrayMax].number[i] = '\0'; /*068*/ numberNname[arrayMax].name = new char[13]; /*069*/ for(i=0;buffer[i+4]!='\n';i++) /*070*/ numberNname[arrayMax].name[i] = buffer[i+4]; /*071*/ numberNname[arrayMax].name[i] = '\0'; /*072*/ /*073*/ buffer = new char[18]; /*074*/ fgets(buffer,18,inputFile); /*075*/ }; SQ LAB.

/*076*/ return 1; /*077*/ }; /*078*/ SQ LAB.

/*079*/ void binaryTreeClass::binaryTreeInorder() /*080*/ { /*080*/ { /*081*/ int current; /*082*/ int stack[Max]; /*083*/ int top; /*084*/ /*085*/ top = 0; /*086*/ current = 1; /*087*/ while(top >= 0) /*088*/ { /*089*/ while(current <= arrayMax) /*090*/ { /*091*/ top = top + 1; /*092*/ stack[top] = current; /*093*/ current = current * 2; /*094*/ }; /*095*/ if(top < 1) break; /*096*/ current = stack[top]; /*097*/ top = top - 1; /*098*/ cout << "\n number : " << numberNname[current].number /*099*/ << " name : " << numberNname[current].name; /*100*/ current = current * 2 + 1; /*101*/ }; /*102*/ }; /*103*/ SQ LAB.

/*106*/ binaryTreeClass object; /*107*/ /*104*/ void main() /*105*/ { /*106*/ binaryTreeClass object; /*107*/ /*108*/ if(object.binaryTreeSetting()==1) /*109*/ object.binaryTreeInorder(); /*110*/ /*111*/ cout << "\n\n Good bye(^@^)\n Type <Enter> : "; /*112*/ cin.get(); /*113*/ } SQ LAB.

이진 탐색 트리 SQ LAB.

이진 탐색 트리 SQ LAB.

quiz : 이진 탐색 트리의 구현 다음과 같은 자료를 처리할 수 있는 이진 탐색 트리를 - Linked list와 배열로 구현하시오. 자료 번호 성명 SQ LAB.

균형 이진 탐색 트리 SQ LAB.

(예) 균형 이진 탐색 트리 SQ LAB.

(예) 불균형 이진 탐색 트리 SQ LAB.