B Tree 자료구조
- 이진 탐색 트리와 유사한 자료구조
- 자식 노드를 둘 이상 가질 수 있고 Balanced Tree 라는 특징이 있다.
✅ 탐색 연산에 있어 O(log N)의 시간 복잡도를 가진다. - 모든 노드들에 대해 값을 저장하고 있으며 포인터 역할을 동반한다.
규칙
- 노드의 자료수가 N이면, 자식 수는 N+1이어야 한다.
- 각 노드의 자료는 정렬된 상태여야 한다.
- 루트 노드는 적어도 2개 이상의 자식을 가져야 한다.
- 루트 노드를 제외한 모든 노드는 적어도 M/2개의 자료를 가지고 있어야 한다.
- 외부 노드로 가는 경로의 길이는 모두 같다.
- 입력 자료는 중복될 수 없다.
데이터 삽입
- 추가는 항상 리프 노드에 한다.
- 노드가 넘치면 가운데 key를 기준으로 좌우 key들을 분할하고 가운데 key는 승진한다.
📢 노드가 넘치는 경우 : M차 B Tree에서 각 노드는 최대 M-1개의 key를 가질 수 있는데 데이터를 삽입하는 과정에서 이를 위반한 것
B+ Tree 자료구조
- B Tree를 개선한 형태의 자료구조
- 값을 리프 노드에만 저장하며 리프 노드들끼리는 연결 리스트로 연결되어 있다.
✅부등호문 연산에 대해 효과적이다. - 리프 노드를 제외한 노드들은 포인터의 역할만 수행한다.
✅ 중간 노드에는 key만 두고 value는 담지 않는다.
장점
- 블럭 사이즈를 더 많이 이용할 수 있다.
→ key 값에 대한 하드디스크 액세스 주소가 없기 때문 - 리프 노드끼리 연결 리스트로 연결되어 있어서 범위 탐색에 매우 유리하다.
단점
- B Tree의 경우 최상 케이스에서는 루트에서 끝날 수 있지만, B+Tree는 무조건 리프 노드까지 내려가야 한다.
'CS' 카테고리의 다른 글
교착상태 (0) | 2024.11.16 |
---|---|
써드 파티(3rd party)란? (0) | 2024.11.14 |
SQL - DB 트랜잭션(Transaction) (2) | 2024.11.13 |
SQL - 저장 프로시저(Stored Procedure) (2) | 2024.11.12 |
SQL - 인덱스(Index) (3) | 2024.11.10 |