자료구조: CHAP 7 트리(1) 2017. 5. 25 순천향대학교 컴퓨터공학과 하 상 호.

Slides:



Advertisements
Similar presentations
Chapter 8. 트리. 개요  트리의 개념, 용어, 방향 트리, 분자식과 같은 응용 분야  이진 트리의 종류, 배열 및 연결 리스트에 의한 이진 트리의 표현법, 중순위 탐방, 전순위 탐방 그리고 후순위 탐방  생성 트리와 최소 비용 생성 트리, 프림의 알고리즘과.
Advertisements

주요 내용 기본 용어 이진 트리(binary tree) 이진 탐색 트리(binary search tree)
자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 20).
T-tree 엄종진 강원대학교 컴퓨터과학과.
제14장 동적 메모리.
연결리스트(linked list).
트리 이 현 직
자료구조론 9장 트리(tree).
Internet Computing KUT Youn-Hee Han
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 50).
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
제 5 장. 스택(Stack).
제 7 장. 트리(Tree).
CHAP 2:순환 순천향대학교 컴퓨터공학과.
Chapter 06. 스택.
제3장 스택과 큐.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자료구조: CHAP 5 스택 순천향대학교 컴퓨터공학과 하 상 호.
제 11 장 다원 탐색 트리.
CHAPTER 5 트리(Tree).
임베디드 실습 # LED, 7’Segment 제어
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 10: 그래프(part 2) 순천향대학교 하상호.
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
제 5 장 트 리 5.1 트리 5.2 이진 트리 5.3 스레드 이진 트리.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
CHAP 7: 트 리 (1) 한 성 대 학 교 정보통신공학과 봉 정 식.
13. 탐색 트리.
Introduction To Data Structures Using C
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 10:그래프 (2) 순천향대학교 하상호.
JA A V W. 03.
프로그래밍 개요
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Tree & Heap SANGJI University Kwangman Ko
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
8장. 상호 배타적 집합의 처리.
11장 균형 탐색 트리.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
알고리즘: 우선순위 큐(8장) 순천향대학교 컴퓨터 학부 하 상 호.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 12: 탐색 순천향대학교 컴퓨터학부 하 상 호.
CHAP 12: 탐색 순천향대학교 컴퓨터학부 하 상 호.
13장. 균형 탐색 트리 and the pain you must suffer to learn them
트리.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
알고리즘: 우선순위 큐(8장) 순천향대학교 컴퓨터 학부 하 상 호.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
보고서 #2(제출기한: 09/23) 다음 문제를 해결하시오. (7)
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
7주차: Functions and Arrays
Chapter 07 트리.
Numerical Analysis Programming using NRs
제 4장 트리.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
우선순위 큐 & Heap Ref. C로 쉽게 풀어쓴 자료구조, 생능출판사, 2005.
C++ Espresso 제15장 STL 알고리즘.
11. 트리.
Presentation transcript:

자료구조: CHAP 7 트리(1) 2017. 5. 25 순천향대학교 컴퓨터공학과 하 상 호

도입 지금까지 배운 자료구조는? 데이터가 계층적 구조를 가지면?

트리 트리(tree)란? 응용 분야 계층적 구조를 나타내는 자료구조 부모-자식 관계의 노드들로 구성 계층적인 조직 표현 파일 시스템 인공지능의 결정트리 등

트리 형식적 정의 트리 예 한 개 이상의 노드들로 구성 루트(root)라는 특정 노드 존재 나머지 노드들은 T1, T2, …, Tn으로 분할 T1, T2, …, Tn은 루트의 서브 트리라 한다. (재귀적 정의) 각 서브 트리는 disjoint 집합을 구성 트리 예 A B C D E F G H I J

트리 용어 루트(root): 부모가 없는 노드 서브 트리(subtree): 간선(edge):노드간의 연결 선 노드의 차수(degree): 서브 트리의 개수 단말 노드 또는 잎노드(terminal/leaf): 차수가 0인 노드 비 단말노드(non terminal): 단말 노드 이외의 노드들 자식 노드(child node): 노드 X의 서브 트리의 루트들은 X의 자식 부모 노드(parent node): X는 그 자식들의 부모 형제 노드(sibling node): 부모가 같은 자식들 조상 노드(ancestor node): 루트부터 노드에 이르는 경로상의 모든 노드들 자손 노드(descendent node): 서브 트리상의 모든 노드들 트리의 차수(degree): 트리에 속한 노드의 최대 차수 수준(level): 트리의 각 층에 매겨지는 번호, 루트의 레벨은 1, 한 층씩 내려갈수록 1씩 증가 높이(height) / 깊이(depth): 트리에 속한 노드의 최대 수준 포리스트(forest): 트리들의 집합 A B C D E F G H I J

예제: 트리 용어 B D E F C I H G 루트: 서브 트리: 간선: A 노드의 차수: 단말 노드 또는 잎노드: 비 단말노드: 자식 노드: 부모 노드: 형제 관계: 조상 노드: 자손 노드: 트리의 차수: 수준: 높이: B A D E F C I H G

트리 표현 트리 T를 리스트로 표현 서브 트리는 순환적으로 리스트로 표현 A B D E F C I H G B C D E F G 노드의 차수에 따라 링크 수가 달라지고, 효율적 알고리즘 작성을 위해서 노드 구조가 일정하는 것이 좋다. 트리의 차수가 2이면?

이진 트리 이진 트리(binary tree)의 정의 이진 트리와 일반 트리간의 차이점 공집합이거나 루트와 왼쪽 서브트리와 오른쪽 서브트리로 구성되며, 각 서브트리는 이진트리이다. (순환적 정의에 유의) 이진 트리와 일반 트리간의 차이점 자식 노드 개수의 제한성 공백 유무 서브트리간에 순서 존재 여부

이진 트리 다음 2개의 트리, T1, T2는 동일한가? 이진 트리 일반 트리 T1 T2 E E H H

예제: 이진 트리 이진 트리 예 루트 노드? 잎 노드? 중간 노드? 차수가 1인 노드는? 트리 높이? 트리 차수? B C D A C D E F G H I

편향 이진트리 왼편 또는 오른편으로 편향되어 있는 트리 (skewed binary tree)

이진트리의 성질 n개 노드를 가진 이진 트리가 갖는 간선의 개수는? B A C D E F G H I

이진 트리의 성질 높이가 h인 이진 트리는 최소 몇 개의 노드를 갖는가? 최대 몇 개의 노드를 갖는가? B C D E F G A C D E F G H I

이진 트리의 성질 N개의 노드를 갖는 이진 트리의 높이는? 최대 높이는? 최소 높이는? B A C D E F G H I

이진 트리의 종류 포화 이진트리(full binary tree) 완전 이진트리(complete binary tree) 각 트리 수준에 노드가 꽉 차 있는 이진트리 트리 수준 단위로 왼쪽부터 오른쪽의 순서로 번호 부여 완전 이진트리(complete binary tree) 트리 높이가 k일 때, 수준 1부터 k-1까지 노드가 모두 채워지고, 마지막 수준 k에서, 왼쪽부터 오른쪽의 순서로 노드가 채워지는 이진트리

이진 트리 표현 배열 표현 부모와 자식노드 인덱스간의 관계: 노드 i에 대해서 이진트리를 포화 이진트리로 가정하고, 각 노드에 번호를 부여하고(왼쪽부터), 그 번호를 배열의 인덱스로 사용 포화 이진트리나 완전 이진트리 표현에 적합 부모와 자식노드 인덱스간의 관계: 노드 i에 대해서 부모 노드 인덱스는? 왼쪽 자식 노드 인덱스는? 오른쪽 자식 노드 인덱스는? 트리의 높이가 k이면 적절한 배열의 크기는?

이진 트리 표현 링크 표현 링크를 이용하여 부모 노드가 자식 노드를 가리키게 하는 방법 노드는 다음 구조체로 표현: left data right 왼쪽 자식을 가리키는 링크 오른쪽 자식을 가리키는 링크 typedef int element; typedef struct node node; typedef node * nodeptr; typedef struct node { element data; nodeptr left, right; }

이진 트리 순회 이진 트리 순회(traversal)란? 이진 트리 순회 방법 트리에 포함된 모든 노드를 방문하는 것 루트, 왼쪽 서브트리, 오른쪽 서브트리 중에서 루트를 언제 방문하는가에 따라서 구분 전위(preorder): 중위(inorder): 후위(postorder):

이진 트리 순회 전위 순회(preorder traversal) 순회 방법을 순환적으로 기술 다음 트리를 전위 순회하면? B C 루트 노드 방문 왼쪽 서브트리 방문 오른쪽 서브트리 방문 다음 트리를 전위 순회하면? B A C D E F G H I

이진 트리 순회 전위 순회 알고리즘 preorder(T) { } B A C D E F G H I

이진 트리 순회 중위 순회(inorder traversal) 순회 방법을 순환적으로 기술 다음 트리를 중위 순회하면? B C 왼쪽 서브트리 방문 루트 노드 방문 오른쪽 서브트리 방문 다음 트리를 중위 순회하면? B A C D E F G H I

이진 트리 순회 중위 순회 알고리즘 inorder(T) { } B A C D E F G H I

이진 트리 순회 후위 순회(postorder traversal) 순회 방법을 순환적으로 기술 다음 트리를 후위 순회하면? B 왼쪽 서브트리 방문 오른쪽 서브트리 방문 루트 노드 방문 다음 트리를 후위 순회하면? B A C D E F G H I

이진 트리 순회 후위 순회 알고리즘 postorder(T) { } B A C D E F G H I

트리 수준별 순회 트리의 수준별 순회(level order)란? 트리의 낮은 수준부터 높은 수준의 순서로 방문하되, 같은 수준에 있는 노드들을 좌측에서 우측의 순서로 모두 방문하는 순회 다음 트리를 수준별로 순회하면? B A C D E F G H I

트리 수준별 순회 트리 수준별 순회 알고리즘은? level_order(T) { } 2 1 9 3 7 4 5 8 6 T 10 11 4 5 8 6 10 12 T

이진 트리 응용 수식 트리란(expression tree)? 수식 트리의 예 산술식, 논리식의 연산자와 피연산자로 트리를 구성 피연산자는 잎노드에, 연산자는 비단말노드에 위치 왼쪽 서브트리는 왼쪽 피연산자를, 오른쪽 서브트리는 오른쪽 피연산자를 표현 수식 트리의 예

수식 트리 다음 수식 트리를 평가하라.

수식 트리 수식 트리의 평가 알고리듬 수식 트리는 이항 연산자만 포함한다고 가정 eval(T) { // T가 null, 잎노드, 비단말노드로 구분 }

수식 트리 주어진 수식으로부터 수식 트리를 어떻게 구성할 것인가? 예제: 수식을 후위 식으로 변환 후위 식으로부터 수식 트리 구성 예제: 주어진 수식: 2 + 3 * 4

수식 트리 cons(exp) // exp의 후위 식으로부터 수식 트리를 구성하여 반환 { stack[n]; top <- -1; // 스택 생성 및 초기화 while (exp의 끝에 도달하지 않았으면) token <- getToken(exp); case { token = operand: // 잎노드를 구성하여 스택에 저장 token = operator: // 연산자 노드를 구성하고, // 스택으로부터 2개 노드를 꺼내어 서브트리로 설정하고, // 연산자 노드와 2개 서브트리로 구성된 트리를 구성하고, // 구성된 트리를 스택에 저장 } return pop(stack)); // 결과의 수식트리 반환