데이타구조
2016-05-03
이진탐색트리 minBST, maxBST, isBST 복습
이진탐색트리에 insert
이진탐색트리 LaTeX으로 출력/조판해 보기
과제 제출 안내
Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
[새로 만들기]
버튼을 눌러
DS16<이름><학번> 폴더를 만들고 (예: DS16김연아123456)
만들어진 폴더를 우클릭
하여
폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한)
Google 메일 계정만 있으면 Google Drive 서비스 이용 가능
Google 메일 계정은 무료로 만들 수 있으며
참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유
퀴즈3 대신하는 숙제
ShareLaTeX에 계정을 만든다
다음 URL의 프로젝트 복사
https://ko.sharelatex.com/project/572259c6df02360d1418e292
높이 4이고 데이타 개수 9개 이상의 이진탐색트리 그려보기
ShareLaTeX 웹사이트 화면캡춰해서 과제 제출 디렉토리에 다음 수업시간 전날 밤 (월요일 5/9) 까지 제출
(오는 금요일은 임시공휴일 지정으로 학교 전체 휴강)
배열/리스트 순차 탐색
처음부터 하나씩 다음으로 진행하면서 원하는 값이 있는지
길이 n인 배열/리스트를 순차 탐색하는 시간복잡도는 O(n)
배열 이진 탐색
크기 순서로 정렬되어 있을 경우에 가능
배열과 같이 Random Access가 되는 데이타 구조일 때
의의 위치로 O(1)만에 접근 가능한 경우에 가능
오름차순으로 정렬되어 있다고 할 때 한가운데 데이타 확인
원하는 값이면 탐색 성공하여 종료
원하는 값이 더 작으면 앞쪽 반쪽에 대해서 탐색 반복
원하는 값이 더 크면 뒤쪽 반족에 대해서 탐색 반복
길이 n = 2^k라고 할 때 범위가 대략 절반씩 감소해 k번 이내로 탐색 종료. k = log n이므로 시간복잡도는 O(log n)
이진 트리 관련 정의들
Binary Search Tree
Proper Binary Tree 또는 Strict Binary Tree
(대부분의 다른 곳에서 Full Binary Tree)
Perfect Binary Tree
(우리 교과서 등 소수의 책에서만
Full Binary Tree를 이것과 동일하게)
Complete Binary Tree
Skewed (편향된) vs Balanced (균형잡힌)
Binary Search Tree (BST)
일반적으로 중복되는 데이타 없다고 가정
Base Case 다음 둘 중 어느 걸로 선택해도 무방
NULL
1개의 데이터로만 이루어진 트리
Inductive Case:
트리가 data와 왼쪽/오른쪽 하위 트리 tl, tr로 이루어질 때
모든 왼쪽 하위 트리 tl의 데이타 < data
그리고 tl도 BST
모든 오른쪽 하위 트리 tr의 데이타 > data
그리고 tr도 BST
BST에서 탐색 시간복잡도 일반적으로 O(log n)아님!!!
균형잡힌(balanced)인 경우만 O(log n)
Proper 또는 Strict Binary Tree
다른 대부분의 곳에서는 Full Binary Tree의 정의가 이것
Base Case: 다음 둘 중 어느 걸로 선택해도 무방
NULL
1개의 데이터로만 이루어진 트리
Inductive Case:
트리가 data와 왼쪽/오른쪽 하위 트리 tl, tr로 이루어질 때
tl, tr 둘 다 NULL이 되던가 아니면 둘 다 NULL 아님
tl, tr 각각도 Proper/Strict/Full Binary Tree
즉, 가지가 항상 두 개씩 뻗고 하나만 뻗는 경우는 없다
Perfect Binary Tree
우리 교과서 등 소수의 책에서만
Full Binary Tree를 이것과 동일하게 정의
Base Case: 다음 둘 중 하나를 선택 가능
NULL
데이타 1개로 이루어진 트리
Inductive Case:
트리가 data와 왼쪽/오른쪽 하위 트리 tl, tr로 이루어질 때
tl과 tr의 높이가 같고 tl과 tr 각각이 Perfect Binary Tree
높이(또는 깊이) k일 때 데이타 개수는 2^k - 1
Complete Binary Tree
모든 Perfect Binary Tree는 Complete Binary Tree이다.
Perfect Binary Tree에서
level order로 맨 끝에 오는 노드를 하나씩 제거해 나가며
구성되는 모든 트리가 Complete Binary Tree
다음 슬라이드 Skewed vs Balanced만 설명하고
남은 수업시간에는 이진트리에 대한 level order를
프로그램으로 작성해 보도록 합시다
level order가 대표적으로 Queue를 활용하는 코드
Perfect B.T. 이면
Complete B.T. 이고 Proper/Strict B.T.
(하지만 그 역은 성립 안함)
Skewed vs Balanced
당연히 Balanced가 아닐 때 편향되었다(Skewed)고 한다
직관적으로는 왼쪽과 오른쪽 하위 트리의 높이(또는 깊이가) 많이
차이나는 노드가 존재할
때
Balanced(균형잡힌)를 정의하는 방법 여러가지 가능
노드가 n개인 트리의 높이가 항상 O(log n)으로 보장되면 Balanced Tree라고 정의할 수도
모든 노드에서 왼쪽 오른쪽 하위 트리의 높이 차이가 어떤 상수값 c이하일 때를 Balanced라고 정의할 수도 있다
이 경우 Complete Binary Tree는 c=1로 주어졌을 때도 balanced가 될 것이고 Perfect Binary Tree는 c=0으로 주어도 balanced가 될 것이다
Made with Slides.com