Over the limit
이진 트리 검색 Binary Tree Search 본문
바이너리 검색
미리 정렬된 데이터를 대상으로 검색 범위를 반으로 감소시켜 가면서 검색 키를 찾는 검색 방법
-찾으려는 데이터보다 키가 작으면 왼쪽으로, 반대는 오른쪽으로 이동
-이동 후 다시 반씩 비교하는 바이너리 서치 실행
binarysearchrecursive(values, start, end, key)
{
int ret=-1; //FAIL
int middle=0;
if(start<=end){
middle=(start+end)/2;
if(key==values[middle]){
ret=middle;
}
else if(key<values[middle]){
ret= binarysearchrecursive(values, start, midde-1 ,key);
}
else{
ret= binarysearchrecursive(values, middle+1 , end, key);
}
}
return ret;
}
내가 최근에 풀었던 문제가 바이너리 트리라 링크 추가함!
C++] 프로그래머스 - 입국심사 / 바이너리 트리 (tistory.com)
[C++] 프로그래머스 - 입국심사 / 바이너리 트리
문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는
xean.tistory.com
바이너리 검색 트리의 제약사항
1) 왼쪽 서브트리에 있는 모든 노드의 키는 루트의 키보다 작다.
2) 오른쪽 서브트리에 있는 모든 노드의 키는 루트의 키보다 크다.
3) 왼쪽 서브트리와 오른쪽 서브트리도 모두 바이너리 검색 트리이다.
4) 중복된 키는 바이너리 검색 트리가 될 수 없다.
바이너리 검색 종류
-순차 검색(sequential search)
일렬로 저장된 데이터들을 차례대로 비교하는 검색 방법
-색인 순차 검색(index sequential search)
데이터가 미리 정렬된 경우에 색인 테이블(index table)을 이용하여 검색의 효율을 높이는 검색 방법
'Algorithm > Algorithm 공부' 카테고리의 다른 글
이진 트리 삽입 Binary Tree Insertion (0) | 2021.05.30 |
---|---|
Heap Application : 힙 정렬 (Heap Sort), 우선순위 큐(Priority Queue) (0) | 2021.05.28 |
힙(Heap)정의, 힙 추가 연산 (0) | 2021.05.24 |
이진 트리(Binary Tree) 순회 (0) | 2021.05.19 |
[C++] vector의 개념 (0) | 2021.04.30 |