Splay 트리는 이진 탐색 트리의 한 종류로, 자주 접근하는 노드를 루트에 가깝게 재배치하는 자가 조정(self-adjusting) 자료구조이다. 기본적인 아이디어는 접근한 노드를 일정한 규칙의 “rotate” 연산인 "splay" 연산을 통해 루트로 끌어올리는 것이다.

Splay 트리의 특징

AVL 트리와 레드-블랙 트리와의 비교

특성 Splay 트리 AVL 트리 Red-Black 트리
균형 유지 자가 조정 (엄격한 균형 보장 없음) 엄격한 높이 균형 느슨한 높이 균형
최악의 경우 시간복잡도 O(n) O(log n) O(log n)
amortized O(log n) O(log n) O(log n)
추가 저장 공간 없음 노드당 높이 정보 노드당 색상 정보
구현 복잡도 비교적 간단 복잡 매우 복잡
적합한 상황 자주 접근하는 요소가 일정한 패턴을 가질 때 검색이 많고 삽입/삭제가 적을 때 삽입/삭제가 빈번할 때

Splay 트리의 기본 연산

Rotate

image.png

Splay

image.png