데이타구조
2016-04-19
중간고사 안내
이진 트리 관련 정의
과제 제출 안내
Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
[새로 만들기]
버튼을 눌러
DS16<이름><학번> 폴더를 만들고 (예: DS16김연아123456)
만들어진 폴더를 우클릭
하여
폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한)
Google 메일 계정만 있으면 Google Drive 서비스 이용 가능
Google 메일 계정은 무료로 만들 수 있으며
참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유
중간고사 안내
10문제 출제함 (총점 100점)
용어/개념 2문제 각 5점씩
시간복잡도 관련 1 문제 5점
Stack과 Queue 추상 데이타 타입의 내부 구현을 어떻게 하느냐에 따른 장단점 관련 10점짜리 1개, 5점짜리 1개
리스트 관련 간단한 코드의 결과를 묻는 2문제 각 10점씩
C관련 기본 개념 sizeof관련 문제들 총 20점
트리 inorder, preorder, postorder 관련 문제들 15점
재귀함수 작성 문제 15점
두시간이면 너무 긴 거 같아서 1시간 30분
(그래도 한 문제당 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