반응형
이진탐색
절반을 딱 잘라 탐색함 찾고자 하는 값이 더 크다 그러면 오른쪽으로 낮으면 왼쪽으로 (오름차순 기준)
이진탐색 알고리즘
int search_binary2(int key, int low, int high)
{
int middle;
while (low <= high) { // 아직 숫자들이 남아 있으면
middle = (low + high) / 2;
if (key == list[middle])
return middle;
else if (key > list[middle])
low = middle + 1;
else
high = middle - 1;
}
return -1; // 발견되지 않음
}
AVL 트리
균형인수(balance factor) = (왼쪽 서브 트리의 높이 - 오른쪽 서브트리의 높이) -1 ~ 1 까지는 균형인수
2-3트리
1면 반드시 자식은 2개 O(log2n) 2면 반드시 자식은 3개 O(log3n)
2-3트리 알고리즘
Tree23Node *tree23_search(Tree23Node* root, int key)
{
if (root == NULL) // 트리가 비어 있으면
return FALSE;
else if (key == root->data)// 루트의 키==탐색키
return TRUE;
else if (root->type == TWO_NODE) { // 2-노드
if (key < root->key)
return tree23_search(root->left, key);
else
return tree23_search(root->right, key);
}
else { // 3-노드
if (key < root->key1)
return tree23_search(root->left, key);
else if (key > root->key2)
return tree23_search(root->right, key);
else
return tree23_search(root->middle, key);
}
}
2-3-4 트리
3개의 데이터와 4개의 자식노드를 가질수있다. O(log4n)
레드블랙트리
각각의 노드가 레드 나 블랙 인 색상 속성을 가지고 있는 이진 탐색 트리 (2-3-4트리를 이진트리로 표현한 것)
관심이 있으신 분들에게 유용한 정보였길 바라며
다음은 B, B*, B+ 트리 개념을 가져오도록 하겠습니다.
반응형