worldint
2024. 11. 11. 13:10
binary search tree
에서 파생된것으로
BST
에서 자식노드의 갯수에 제한을 없앤것이 b-tree
이다
자식노드의 갯수가 3개 이상이려면
부모노드의 key도 하나 이상이어야한다
부모노드의 key들을 오름차순으로 정렬한다
정렬된 순서에 따라 자녀 노드들의 key값의 범위가 결정된다
[20 40]
/ | \
[10 15] [30 35] [50 60 70]
/ | / | | \
[5 7] [12] [25] [32] [45] [55 65 75]
자식노드의 갯수에 따라 n차 b-tree로 불리는데
위의 예시는 자식노드가 3개이므로 3차 B-tree이다
key에 의해서 자식노드들의 범위가 정해진다
왼쪽: 20 > x,
가운데: 20 < x < 40
오른쪽: 20 < x
B-tree의 중요한 파라미터들로는
- M : 최대로 가질 수 있는 자식노드의 수, M에 따라 M차 B-tree로 불린다, 위의 예시에서는 3
- M-1 : 각 노드의 최대 key의 수 : 노드에 들어있는 숫자의 갯수를 말함, 3차 b-tree는 최대 2개까지 들어있을 수 있다
- ⎡M/2⎤: M/2의 올림, M이 3일때 2 : 각 노드의 최소 자녀 노드 수
(leef, root노드는 제외) - ⎡M/2⎤-1: 각 노드의 최소 key 수, 예시에서는 1
(root node제외) - b-tree에서 internal node의 key가 x라면 자식노드의 수는 x+1
시간복잡도
O(logN)의 시간 복잡도를 가짐
N은 테이터의 갯수
만약 데이터가 100개일 때, 3차 B-tree라면 $$\log_3 100$$ 으로 4~5의 값이 나오고
그럼 높이가 4개에서 5개정도가 나오고 시간 복잡도도 그정도 나온다