[c++] AVL 트리를 이용한 검색
AVL 트리는 자가 균형 이진 검색 트리로, 검색 작업을 빠르게 수행할 수 있는 자료구조입니다. AVL 트리는 노드의 삽입 또는 삭제 시 트리의 균형을 유지하도록 자가 균형 조정을 수행합니다.
AVL 트리의 특징
AVL 트리의 특징은 다음과 같습니다:
- 모든 노드는 균형 인수(balance factor)를 가지며, 균형 인수는 해당 노드의 왼쪽 서브트리의 높이와 오른쪽 서브트리의 높이 차이입니다.
- 모든 노드의 균형 인수는 -1, 0, 1로 유지됩니다.
- 삽입 또는 삭제 작업 후에도 모든 노드의 균형이 유지되어야 합니다.
AVL 트리의 검색
AVL 트리를 사용하여 검색을 수행하는 예시 코드는 다음과 같습니다:
class Node {
public:
int key;
Node *left;
Node *right;
int height;
};
Node *search(Node* root, int key)
{
if (root == NULL || root->key == key)
return root;
if (root->key < key)
return search(root->right, key);
return search(root->left, key);
}
위 예시 코드는 주어진 키를 가진 노드를 AVL 트리에서 검색하는 데 사용될 수 있습니다.
AVL 트리를 이용한 검색은 트리의 균형을 유지하면서 빠르게 수행될 수 있으며, 효율적인 데이터 구조로서 널리 사용됩니다.
참고 자료
- https://andrew.cmu.edu/course/15-121/lectures/Binary%20Search%20Trees/code/AVLInsert.cpp
- https://en.wikipedia.org/wiki/AVL_tree