[DataStructure / Algorithm] Binary Search Tree vs. AVL Tree (5)

전성훈·2023년 11월 7일
0

Data Structure-Algorithm

목록 보기
15/35
post-thumbnail

주제: Binary Search Tree vs. AVL Tree


차이점

  • AVL 트리와 이진 탐색 트리(BST)는 두 가지 다 이진 트리 자료구조의 일종이다. 이들의 차이점은 트리의 균형 유지 방식과 성능에 있다.
  • 이진 탐색 트리는 각 노드의 왼쪽 서브트리에는 해당 노드의 값보다 작은 값을 가진 노드들이 위치하고, 오른쪽 서브트리에는 해당 노드의 값보다 큰 값을 가진 노드들이 위치하는 이진 트리이다. 이진 탐색 트리는 탐색, 삽입, 삭제 연산을 평균적으로 O(log n) 시간 복잡도에서 수행할 수 있다.
  • 그러나 이진 탐색 트리는 트리의 균형이 보장되지 않는다. 즉, 최악의 경우 트리의 높이가 O(n)이 될 수 있으며, 이 경우 탐색, 삽입, 삭제 연산의 시간 복잡도가 O(n)이 된다.
  • AVL 트리는 이진 탐색 트리의 확장된 형태로, 각 노드의 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 최대 1이 되도록 트리의 균형을 유지하는 이진 트리이다. AVL 트리는 회전(Rotation) 연산을 사용하여 균형을 유지한다.
  • 균형 유지를 통해 AVL 트리는 항상 트리의 높이가 O(log n)이 되도록 보장한다. 따라서 탐색, 삽입, 삭제 연산을 항상 O(log n) 시간 복잡도에서 수행할 수 있다.

요약

  • 이진 탐색 트리는 균형이 보장되지 않아 최악의 경우 O(n)의 시간 복잡도를 가지지만, AVL 트리는 균형을 유지하여 항상 O(log n)의 시간 복잡도를 보장한다.
  • AVL 트리는 회전 연산을 사용하여 균형을 유지하며, 이진 탐색 트리에는 균형 유지 메커니즘이 없다.

결론

  • 따라서, 탐색, 삽입, 삭제 연산의 성능이 중요한 경우에는 AVL 트리와 같은 균형 이진 탐색 트리를 사용하는 것이 좋다. AVL 트리 외에도 균형 이진 탐색 트리로 Red-Black Tree, B-Tree, Splay Tree 등이 있으며, 각각의 트리는 균형 유지 방식과 특성이 다르다.

AVL 트리 회전 연산

  • AVL 트리의 회전 연산에 대해 좀 더 자세히 설명하면, 회전 연산은 트리의 노드들을 재구성하여 트리의 균형을 유지하는 데 사용된다. AVL 트리에서는 다음 네 가지 회전 연산이 존재한다.
    • LL 회전(Right Rotation): 삽입 또는 삭제로 인해 노드의 왼쪽 서브트리에 불균형이 발생한 경우 사용된다.
    • RR 회전(Left Rotation): 삽입 또는 삭제로 인해 노드의 오른쪽 서브트리에 불균형이 발생한 경우 사용된다.
    • LR 회전(Left-Right Rotation): 삽입 또는 삭제로 인해 노드의 왼쪽 서브트리의 오른쪽 서브트리에 불균형이 발생한 경우 사용된다. 이 회전은 왼쪽 서브트리에 대한 왼쪽 회전 후, 전체 트리에 대한 오른쪽 회전을 수행한다.
    • RL 회전(Right-Left Rotation): 삽입 또는 삭제로 인해 노드의 오른쪽 서브트리의 왼쪽 서브트리에 불균형이 발생한 경우 사용된다. 이 회전은 오른쪽 서브트리에 대한 오른쪽 회전 후, 전체 트리에 대한 왼쪽 회전을 수행한다.
  • 회전 연산은 트리의 구조를 변경하지만 이진 탐색 트리의 성질을 유지한다. 이로 인해 AVL 트리는 균형이 유지되면서도 탐색, 삽입, 삭제 연산을 빠르게 수행할 수 있다.
  • 다만, AVL 트리의 회전 연산은 삽입 및 삭제 연산에 추가적인 오버헤드를 발생시킨다. 따라서 데이터의 변경이 빈번한 상황에서는 Red-Black Tree와 같이 회전 연산에 대한 오버헤드가 상대적으로 작은 균형 이진 탐색 트리를 사용하는 것이 더 효율적일 수 있다.

제가 학습한 내용을 요약하여 정리한 것입니다. 내용에 오류가 있을 수 있으며, 어떠한 피드백도 감사히 받겠습니다.

감사합니다

0개의 댓글