2021. 7. 12. 09:38ㆍ자료구조 (Data Structure)
B-Tree
- 하나의 노드에 여러 자료(데이터)가 배치되는 트리 구조
- 스스로 균형을 맞추는 트리 --> 최악의 경우에도 O(logN)의 검색 성능을 보인다.
- 한 개의 노드에 M개의 자료가 배치되면 M차 B 트리라 한다
- 규칙
- 노드의 자료수가 n이라면, 자식 수는 n+1
- 각 노드의 자료는 정렬된 상태
- root노드는 적어도 2개 이상의 자식을 가짐
- root노드 제외 모든 노드는 적어도 M/2개의 자료를 가짐
B+ Tree
- 색인 구조에서 순차 접근에 대한 문제의 해결책으로 제시
- key값이 leaf node와 leaf의 부모 노드에 공존
- B-Tree의 변형 구조로 index부분과 leaf노드로 구성된 순차 data부분으로 이루어짐
- index 부분의 key값은 leaf에 있는 key값을 직접 찾아, 모든 key 값은 leaf노드에 나열
- leaf노드는 순차적으로 linked list를 구성 --> 임의 접근 & 순차 접근 가능
- 장점
- key값에 대한 harddisk 엑세스 주소가 없기 때문에 노드 사이즈를 더 많이 이용 가능
- leaf 노드끼리 limked list로 연결되어 있어서 시퀀셜한 레인지 탐색에 매우 유리함
- 단점
- 무조건 leaf 노드까지 가야 함
- 예시
- 리프 노드에서만 레코드 포인터를 가진다.
- 리프 노드에 모든 key값이 존재한다.
- 리프 노드가 linked list형태임을 알 수 있다.
- 삽입
- 빈자리가 있을 경우: 그냥 삽입
- 빈자리가 없을 경우: 노드를 분리하고 중간 값을 가진 노드를 부모 노드에 삽입
- 삭제: leaf 노드에서만 key값을 삭제
- 형제 노드 재분배 가능: 분배 후, 작은 키 값을 삭제한 노드 위치에 둠
- 형제 노드 재분배 불가능: 삭제할 키 값의 leaf 노드와 형제 노드를 병합
출처:
https://wangin9.tistory.com/entry/B-tree-B-tree
https://velog.io/@seanlion/btree
https://goodgid.github.io/FP-B+-Tree/
'자료구조 (Data Structure)' 카테고리의 다른 글
그래프(Graph) (0) | 2021.09.27 |
---|---|
Red - Black Tree (0) | 2021.07.11 |
Hash Table (0) | 2021.07.10 |
배열(Array) VS. 리스트(List) (0) | 2021.07.08 |
HEAP(힙) (0) | 2021.06.29 |