처음부터 끝까지 모든 요소를 검사하는 전략
def sequentialSearch(data, x):
for i in range(len(data)):
if x == data[i]:
return i
return -1
def binarySearch(data, target, start, end):
if start > end:
return None
mid = (start + end) // 2
if data[mid] == target:
return mid
elif data[mid] > target:
return binarySearch(data, target, start, mid-1)
else:
return binarySearch(data, target, mid+1, end)
동적으로 노드를 추가하거나 제거할 수 있으면서 이진 탐색 알고리즘을 사용할 수 있도록 해주는 게 이진 탐색 트리 이다.
→ 자식은 최대 2개뿐인 노드로만 이루어진 이진트리이다.
이진 탐색도 정렬이 되어있어야 탐색이 가능한 것 처럼 이진 탐색 트리도 이진 탐색이 가능한 상태로 정렬되어 있어야 한다
구조 측면에서 이진 탐색 트리는 → 각 노드의 왼쪽 자식 노드보다 크고 오른쪽 자식 노드보다 작다.
트리가 한쪽으로 쏠리게 되면 검색효율이 극단적으로 떨어진다. → 레드 블랙 트리가 불균형한 트리로 해결해 줄 수 있음
정보 감사합니다.