[자료구조] B+ tree & B- tree
[자료구조] B+ tree & B- tree 검색을 위한 이진탐색트리 이진탐색트리는 컴퓨터 트리 자료구조로 각각의 노드가 최대 두 개의 자식 노드를 가집니다. 부모노드를 기준으로 왼쪽서브트리의 노드들은 모두 부모노드보다 작고, 오른쪽 서브 트리의 노드들은 모두 부모노드보다 큽니다. 이러한 특성 덕분에 어떤 수를 탐색할 때 시간복잡도는 트리의 높이가 h라고 했을 때, O(h)가 됩니다. 이진탐색 트리가 다음과 같이 경사 이진 트리 형태이면, 높이가 n이므로 O(n)의 시간복잡도를 가져서 비효율적입니다. 이러한 문제점을 해결하기 위해 Balance tree가 등장했습니다. Balance tree는 노드가 삽일될 때마다 자동으로 균형을 맞춰주는 트리입니다. B- tree, B+ -tree, B* -tree는 Balance tree중 하나로 이진 트리와 다르게 노드가 2개이상의 자식을 가질 수 있습니다. 주로 데이터베이스의 인덱스가 B- tree 구조입니다. B- tree M차 b- tree는 한 노드에 들어갈 수 있는 최대 키의 개수가 M개입니다. M차 b-tree의 특성은 다음과 같습니다. 한 노드의 키가 N개라면, 그 노드의 자식의 갯수는 반드시 N+1이어야 한다. 따라서 tree의 max degree는 M+1) root node가 leaf node인경우를 제외하고 항상 최소 2개의 자식을 가진다. root node를 제외한 모든 노드는 적어도 l M/2 l 개의 키를 가지고 있어야 한다. 모든 leaf node들은 같은 level에 있어야 한다. node내의 key값들은 오름차순이다. (중복된 키 허용 x) node의 자료 Dk 왼쪽 서브트리는 Dk보다 작은 값들이고, 오른쪽 서브트리는 Dk보다 큰 값들이다. B+ -tree B+ -tree는 키에 의해서 각각 식별되는 레코드의 효율적인 삽입, 검색, 삭제를 통해 정렬된 데이터를 표현하기 위한 트리자료입니다. 주...