그 외 트리들

트리들의 정의, 특징, 연산, 장단점

트리 종류 정의 특징 지원 연산 장점 단점  
이진탐색트리
(BST)
Binary Search Tree
- 노드의 왼쪽 자식은 부모보다 작고
- 노드의 오른쪽 자식은 부모보다 크도록 정렬된 트리
- 자식 간 순서 기반
- 균형을 유지하지 않음
- 탐색, 삽입, 삭제의 평균 시간복잡도가 O(log n)
- 최악의 경우여도 O(n)
- 탐색 : O(log n)
- 삽입 : O(log n)
- 삭제 : O(log n)
- 구현이 간단하고 직관적
- 메모리 오버헤드가 적음
- 정렬된 데이터 표현이 간단
- 데이터가 정렬된 경우 최악의 경우 발생
- 고르게 분산된 데이터가 필요
 
Splay Tree - 최근 접근한 노드를 루트에 가깝게 위치하도록 구성한 이진 탐색 트리
- 비균형 허용
- 루트에 자주 사용된 데이터를 위치시켜 접근 효율성 향상
- 자주 사용된 데이터에 O(1)의 성능 제공 가능
- 탐색, 삽입, 삭제의 평균 시간복잡도가 O(log n)
- 최악의 경우여도 O(n)
- 탐색 : O(log n)
- 삽입 : O(log n)
- 삭제 : O(log n)
- 평탄화 : O(n)
- 자주 접근하는 데이터를 빠르게 처리 가능
- 균형 유지 비용이 없음.
- AVL보다 구현이 간단
- 최악의 경우 성능이 O(n)
- 균형 상태를 강제하지 않아 탐색에서 비효율 발생 가능
AVL Tree - 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하가 되도록 유지하는 이진 탐색 트리 - 엄격한 균형 유지
- 탐색, 삽입, 삭제가 항상 O(log n)
- 삽입/삭제 시 균형 회전 필요
- 탐색 : O(log n)
- 삽입 : O(log n)
- 삭제 : O(log n)
다른 트리는 평균 O(log n)이지만, 이건 O(log n) 보장
- 항상 균형 유자
- 탐색 시간이 O(log n)으로 일정
- 데이터 분포에 관계없이 안정적인 성능
- 삽입/삭제시 재균형 비용 발생
- 추가 메모리 사용(높이 정보)
- 구현이 복잡
 
BB Tree
(Balanced Binary Tree)
- 각 노드 양쪽 서브트리 무게가 균형을 유지하는 이진 탐색 트리를 포괄적으로 지칭
- 모든 하위 트리가 특정 균형 조건을 만족하도록 설계됨
- 모든 서브트리가 균형 조건을 만족
- 균형 유지 방법은 구현에 따라 다양
(AVL, Red-Black 포함 가능)
- 삽입/삭제시 균형 유지 작업 필요
  - 항상 균형 유지로 효율적인 탐색 성능 보장
- 다양한 균형 유지 기법을 선택적으로 사용 가능
- 안정적인 삽입, 삭제 성능
- 균형 유지 작업으로 인해 삽입/삭제 시 성능 오버헤드 발생 가능
- 구현 복잡성 증가
- 균형 유지방식에 따라 메모리 요구량 증가 가능
 

요약

(1) 이진 탐색 트리

  • 단순하고 빠르게 구현 가능
  • 데이터가 고르게 분산되지 않을 경우 성능이 저하됨

(2) Splay Tree

  • 최근 접근 데이터 처리에 강점이 있음
  • 균형 강제가 없어 특정한 경우 비효율적임

(3) AVL Tree

  • 균형 유지로 탐색 성능이 안정적임
  • 삽입/삭제 비용이 높음
  • 구현이 복잡함

(4) BB Tree

  • 노드 양쪽 서브트리 무게가 균형을 유지하도록 하는 이진 탐색 트리를 포괄적으로 지칭하는 것
  • 균형을 맞추는 데 성능 오버헤드 발생 가능성
  • 대신 항상 균형을 맞추기에 효율적인 탐색 가능