SMALL
B-tree와 각 노드에 데이터가 저장이 되지만 B+tree의 경우엔 인덱스노드와 리프노드가 분리되어서 존재한다. 그리고, 리프노드는 서로 연결되어 있어서 임의접근과 순차접근모드 성능이 우수하다.
공통점
- 모든 leaf의 depth가 같다
- 각 node에는 k/2 ~ k 개의 item이 들어있어야 한다.
- search가 비슷하다.
- add시 overflow가 발생하면 split 한다
- delete 시 underflow가 발생하면 redistribution하거나 merge 한다.
차이점
- B-tree의 각 노드에서는 key 뿐만 아니라 data도 들어갈 수 있다. 여기서 data는 disk block으로의 포인터가 될 수 있다.
- B+tree는 각 node에서는 key만 들어가야 한다. 그러므로 B+tree에서는 data는 오직 leaf에만 존재한다.
- B+tree는 B-tree와는 달리 add, delete가 leaf에서만 이루어진다.
- B+ tree는 leaf node 끼리 linked list로 연결되어 있다.
B+tree의 장점
- 블럭사이즈(노드사이즈) 를 더 많이 이용할수잇다 ( 키값에 대한 harddisk 엑세스 주소가 없기 때문에 )
- leaf node 끼리 linked list로 연결되어있어서 시퀀셜한 레인지 탐색에 매우 유리하다
B + Tree 의 단점
- B Tree의 경우 best case에는 루트에서 끝날수 있지만, B+ Tree의 경우 무조껀 leaf노드까지 가야한다.
출처: https://wangin9.tistory.com/entry/B-tree-B-tree [잉구블로그]
LIST
'전공 > 자료구조' 카테고리의 다른 글
Stable Sort, Unstable Sort (0) | 2021.07.13 |
---|---|
삽입정렬 (0) | 2021.06.07 |
AVL 트리 vs Red Black 트리 (0) | 2021.06.05 |
정렬 시간복잡도 (0) | 2021.06.05 |
선택정렬(SelectionSort), 거품정렬(BubbleSort) (0) | 2020.09.17 |