프로그래밍 기초/알고리즘
R 트리 알고리즘
niamdank
2021. 12. 9. 16:48
R 트리
B 트리를 다차원 검색 트리로 확장한 트리 자료구조이다.
R 트리에는 다음의 두 종류의 노드가 존재한다.
- 영역 노드 트리의 차원에 따라 노드가 가지는 공간을 표현하는 노드
- 키 노드 실제 키와 소속된 페이지 번호를 가지는 노드
R 트리는 다음의 성질을 갖는다.
- 루트를 제외한 모든 내부 노드는 └k/2┘ ~ k 개의 영역을 갖는다.
- 모든 리프 노드는 같은 깊이를 가진다.
- 모든 레코드는 리프 노드에서만 가리킨다.
R 트리의 표현
R 트리는 KDB 트리와 달리 키를 포함하는 최소 영역에만 노드가 존재한다.
아래와 키가 존재할 때 R트리의 표현은 다음과 같다.
이름 | key1 | key2 |
A | 8 | 100 |
B | 4 | 10 |
C | 6 | 35 |
D | 1 | 10 |
E | 6 | 60 |
F | 5 | 45 |
G | 7 | 85 |
H | 3 | 20 |
I | 10 | 70 |
J | 2 | 30 |
K | 8 | 50 |
L | 4 | 50 |
R 트리에서의 삽입과 삭제
R 트리의 삽입과 삭제 연산은 기본적으로 B 트리와 동일하게 진행된다.
단, 최소 영역에만 노드가 존재하므로 병합 혹은 분배가 일어났을 때 영역 노드가 함께 변하게 된다.
가령 그림 5-30의 데이터에 M과 N을 순서대로 삽입하게 된다면 트리의 영역은 다음과 같이 변하게 된다.
NadanKim/Algorithm: 알고리즘 학습 및 예제 코드 작성을 위한 저장소 (github.com)
GitHub - NadanKim/Algorithm: 알고리즘 학습 및 예제 코드 작성을 위한 저장소
알고리즘 학습 및 예제 코드 작성을 위한 저장소. Contribute to NadanKim/Algorithm development by creating an account on GitHub.
github.com