[c++] 균형 잡힌 이진 트리 검색 알고리즘

이진 탐색 트리에서의 검색 알고리즘은 일반적으로 반복문을 사용하여 구현됩니다.

Node* search(Node* root, int key) {
    while (root != nullptr && root->key != key) {
        if (key < root->key)
            root = root->left;
        else
            root = root->right;
    }
    return root;
}

균형 잡힌 이진 트리의 검색 알고리즘은 AVL 트리에서 사용되는 회전 연산 등의 추가적인 균형 조정 작업이 필요할 수 있습니다.

AVL 트리의 검색 알고리즘은 다음과 같이 구현될 수 있습니다.

Node* searchAVL(Node* root, int key) {
    if (root == nullptr || root->key == key)
        return root;
    if (key < root->key)
        return searchAVL(root->left, key);
    else
        return searchAVL(root->right, key);
}

따라서, 균형 잡힌 이진 트리에서의 검색 알고리즘은 기본적으로 이진 탐색 트리의 검색 알고리즘과 유사하며, AVL 트리에서의 추가적인 균형 유지 작업을 고려해야 합니다.

관련 참고 자료:
AVL 트리: https://en.wikipedia.org/wiki/AVL_tree
이진 탐색 트리: https://en.wikipedia.org/wiki/Binary_search_tree