Balanced-Tree, Bayer-Tree, BSRL-Tree
"Rudolf Bayer" 가 창시한 Self-balanced Tree 중 가장 유명한 자료구조
- 이진트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2 보다 큰 트리
= 노드의 개수(M)에 따라, M차 B-Tree
- 하나의 노드에 여러 개의 데이터(Key)를 저장하여 트리의 높이(Height) 을 낮춤으로써 탐색 시간을 줄이도록 고안된 트리
[ 3차 B-Tree ]
- 자식 노드의 Key 는 부모 노드의 Key 에 따라 오름차순으로 배치됨
- 대소비교를 통해 알맞은 브랜치를 따라 원하는 Key 를 찾을 때까지 탐색
- 노드에 들어있는 Key 수가 (M - 2)개 이하라면, 바로 삽입
- 삽입 후 Key 수가 M 개라면, B-Tree 조건 위배( Key 수는 최대 M-1 )로 인해 해당 Key 를 부모 노드로 올리고 자식 노드들을 새롭게 분리
>>> 위 과정을 B-Tree 조건을 만족할 때까지 재귀적으로 수행
- 삭제 시 B-Tree 의 조건 3가지 ( 특징 5, 6, 7 번 ) 를 만족하도록 트리를 재구조화(Restructuring)
균형을 유지하기 위한 연산에서 노드의 생성과 부가적인 연산을 최소화하기 위해 등장
B-Tree의 확장 개념
B-Tree 와 달리 오직 리프 노드에만 Key - Value 를 저장
리프 노드끼리는 연결 리스트(Linked List)로 연결
- 장점