자료구조: CHAP 7 이진 탐색 트리 2016. 9. 6 순천향대학교 컴퓨터공학과 하 상 호.

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
고교평준화의 득과 실 김영주 이지영 최윤영.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
자료구조론 9장 트리(tree).
6장 트리.
DC Motor Control.
쉽게 배우는 알고리즘 3장. 정렬Sorting
CHAP 7:트리.
7장 이원 탐색 트리.
강의 #7 트리(Tree).
쉽게 배우는 알고리즘 5장. 검색트리
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
자료구조: CHAP 7(3) 트리 순천향대학교 컴퓨터공학과 하 상 호.
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
쉽게 배우는 알고리즘 5장. 검색트리.
제 8 장 이진 탐색 트 리 8.1 이진 탐색 트리 정의 8.2 이진 탐색 트리의 탐색 8.3 이진 탐색 트리의 삽입
C언어 응용 제 10 주 트리.
CHAP 9:정렬 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 11: 해싱 순천향대학교 하상호.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
12 검색.
IT CookBook, 자바로 배우는 쉬운 자료구조
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
Tree & Heap SANGJI University Kwangman Ko
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 11: 해싱 순천향대학교 하상호.
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
C언어 응용 제10주 실습 해보기 제8장 트리.
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
C언어 응용 제6주 실습 해보기 제5장.
CHAP 9: 정렬 (part 2) 순천향대학교 컴퓨터학부 하 상 호.
제어문 & 반복문 C스터디 2주차.
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
선택 정렬 #define SWAP(x, y, t) {(t) = (x); (x) = (y); (y) = (t);}
마이크로소프트 박종호.
CHAP 11 : 해싱.
[INA470] Java Programming Youn-Hee Han
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
U N I X 창원대학교 전자계산학과 김병찬.
작성일 참고서적 – Programing Game AI by Example
CHAP 8:우선순위큐.
C언어 응용 제 15 주 검색.
CHAP 12 : 탐색.
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 9:정렬 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
5차시: 로봇 주행 실습 및 미션 수행하기 준비물 SPL-Duino 보드 (조도센서 내장)
전류는 자계에서 힘을 받는다 기계공학교육 박지훈 황인석 한만혁 이덕균.
Chapter 07 트리.
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 6주차 대림대학교 2017년도 1학기 강의 왕보현
서울, 1964년 겨울 -김승옥.
서울, 1964년 겨울 -김승옥.
서울, 1964년 겨울 -김승옥.
국어지도 유아교육과 권수연 김아람 중등특수교육과 박수진 양한솔
Report #4 (1) (due 4/4) 문제 #1 3개의 막대 A, B, C와 원판 n개를 전달받아 Hanoi 탑 문제를 해결하는데 필요한 원판의 이동 회수를 구하여 반환하는 hanoi_tower(n, A, B, C)를 작성하라. 여기서 원판 n은 막대 A에 쌓여 있고.
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
보고서 #4 (1) (제출기한: 10/6) #1 다음 그래프 G에 대해서 답하시오. (2*5 = 10)
Report #3- 문제 1 Set(집합) 추상 데이터 타입을 정의하고, 다음과 같은 연산자들을 포함시켜라. 여기서 S, S1, S2는 집합을 나타내고, i는 집합 원소를 나타낸다. 연산 의미 create() Return {} insert(S, i) If i є S then.
Presentation transcript:

자료구조: CHAP 7 이진 탐색 트리 2016. 9. 6 순천향대학교 컴퓨터공학과 하 상 호

목차 이진탐색트리

이진 탐색트리 이진트리 기반의 효율적 탐색을 위한 자료구조 정의 모든 원소의 키는 유일하다. Key(왼쪽 서브트리상의 노드) < key (루트 노드) Key(오른쪽 서브트리상의 노드) > key (루트 노드)

탐색 알고리듬 생각(key: 탐색 키) Key = key(root) => 탐색 성공 알고리즘 복잡도는? search(T, key) { }

이진 탐색트리 이진탐색트리의 노드들을 오름차순으로 방문하고자 한다면? 2 5 7 1 4 6 8 3 9

삽입 연산 먼저, 탐색 키에 대해서 이진탐색트리를 탐색 탐색 성공 => 반환 탐색 실패 => 탐색이 실패하는 위치에 새로운 노드 삽입

삽입 연산 insertBST(T, key) { p, q: node; p = T; // 먼저 탐색을 수행하고, // 탐색이 성공이면 복귀하고, // 탐색이 실패하면, 노드를 생성하여 적절한 위치에 삽입 // T가 공백인 경우 고려 }

삽입 연산 insertBST(T, key) p, q: node; p <- T; while p != null do // 탐색 수행 if (p.key = key) then // 탐색 성공 return ; end if q <- p; // 부모 노드 설정 if (p.key > key) then // 다음 수준 노드에 대해서 탐색 p <- p.left; else p <- p.right; repeat // 탐색이 실패한 경우 End insertBST

예제 다음 순서로 자료가 입력되었다고 가정하여 이진 탐색트리를 구성하라. 5, 3, 7, 2, 4, 6, 9, 1, 8, 10

삭제 연산 삭제 대상 노드의 자식 노드가 0, 1, 2개인 경우로 구분 2 5 7 1 4 6 8 3 9

삭제 연산 삭제 대상 노드의 자식 노드가 없는 경우 부모노드의 해당 링크를 null로 만들고, 해당 노드를 삭제/반환

삭제 연산 삭제 대상 노드의 자식 노드이 한 개인 경우 삭제되는 노드의 자리에 자식 노드를 위치시킨다.

삭제 연산 삭제 대상 노드의 자식 노드이 2개인 경우 삭제 노드를 왼쪽 서브트리의 최대 노드로 대체하거나 오른쪽 서브트리의 최소 노드로 대체한다.

예제 다음 순서로 자료가 입력되었다고 가정하여 이진 탐색트리를 구성하라. 5, 3, 7, 2, 4, 6, 9, 1, 8, 10 위에서 구성한 트리에 대해서 다음 노드를 순서대로 삭제하라. 1 7 5

삭제 연산 deleteBST(T, key) { p, q: node; p = T; // 먼저 탐색을 수행하고, // 탐색이 실패이면 복귀하고, // 탐색이 성공이면, 해당 노드 p를 삭제: p의 차수가 0, 1, 2인 경우 고려 }

삭제 연산 deleteBST(T, key) { p = T; while (p != null and p.key != key) { // 삭제 대상 노드 탐색 parent = p; if (key < p.key) then p <- p.left; else p <- p.right; } If (p = null) then return; // 탐색 실패 case { p.left = null and p.right = null: // p가 잎노드인 경우 p.left = null or p.right = null: // p의 차수가 1인 경우 p.left != nul and p.right != null: //p의 차수가 2인 경우 free(p) ; // 삭제 대상 노드 반환 탐색 삭제

삭제 연산 deleteBST(T, key) { // … case { p.left = null and p.right = null: // p가 잎노드인 경우 // 고려사항: p가 parent의 left, right에 위치하는지? p.left = null or p.right = null: // p의 차수가 1인 경우 // 고려사항: p의 left, right가 null인지? // p가 parent의 left, right에 위치하는지? // p의 차수가 2인 경우 } free(p);

삭제 연산 삭제 대상 노드 p의 차수가 1인 경우 (q는 p의 부모 노드) 다음 4가지 경우 고려 q q p p q q q p q.left <- p.left q q q p p p q.left <- p.right q.right <- p.left q.right <- p.right

삭제 연산 deleteBST(T, key) { // … case { //… p.left != nul and p.right != null: //p의 차수가 2인 경우 // 고려사항: 오른쪽 서브트리에서 가장 작은 노드(후속자) 탐색 // 후속자의 오른쪽 서브트리를 후속자 부모에 연결 } free(p);

삭제 연산 삭제 대상 노드 p의 차수가 2인 경우 (p의 우측 서브 트리에서 가장 작은 키 값을 갖는 노드 탐색) 다음 2가지 경우 고려 p p p succParent succParent p succ succ k (삭제대상) … succParent … succParent succ (삭제대상) succ k succParent.left <- succ.right p.Key <- succ.key free(succ) succParent.right <- succ.right p.Key <- succ.key free(succ)

삭제 연산 deleteBST(T, key) { // … case { //… p.left != nul and p.right != null: //p의 차수가 2인 경우 // 고려사항: 오른쪽 서브트리에서 가장 작은 노드(후속자) 탐색 // 후속자의 오른쪽 서브트리를 후속자 부모에 연결 } // end case free(p); } succParent <- p; succ <- p.right; while (succ.left != null) { // 우측 서브트리에서 최소값 노드 탐색 succParent <- succ; succ <- succ.left; } // 후보자의 자식노드(우측 서브트리) 존재 경우 고려 if (succParent.left = succ) then succParent.left <- succ.right; else // p == succParent 인경우 succParent.right <- succ.right; p.key <- succ.key; // 삭제 대상 노드를 후보자로 대체 p <- succ; // 삭제 대상 노드 삭제

삭제 연산 다음 트리에서 5를 삭제하라. 5 3 9 2 4 7 10

삭제 연산 다음 트리에서 5를 삭제하라. 5 3 9 2 4 7 10 8

이진 탐색트리 성능 탐색, 삽입, 삭제 알고리즘의 복잡도는?

예제 다음 순서로 자료가 입력되었다고 가정하여 이진 탐색트리 T를 구성하라. 10, 7, 5, 15, 9, 2, 11, 3, 18, 13, 12, 16, 17 위에서 구성된 T를 다음의 순서로 노드를 삭제하라. 각 삭제 후의 트리를 보여라. 5 18 15