Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

B-Tree - Why can't there be a node with an even number of keys?

I'm trying to implement a B-Tree according to the chapter "B-Trees" in "Introduction to Algorithms".

What I don't quite get is the "minimal degree". In the book it is stated that the degree is a number which expresses the lower/upper bound for the number of keys a node can hold. It it further says that:

  1. Every non-root node stores at least t - 1 keys and has t children.
  2. Every node stores at most 2*t - 1 keys and has 2*t children.

So you get for t = 2:

  1. t - 1 = 1 keys and t = 2 children
  2. 2*t - 1 = 3 keys and 4 children

For t = 3

  1. t - 1 = 2 keys and t = 3 children
  2. 2*t - 1 = 5 keys and 6 children

Now here's the problem: It seems that the nodes in a B-Tree can only store an odd number of keys when they are full.

Why can't there be a node with, let's say at most 4 keys and 5 children? Does it have something to do with splitting the node?

like image 849
helpermethod Avatar asked Aug 18 '10 21:08

helpermethod


1 Answers

It seems that the nodes in a B-Tree can only store an odd number of keys?

Definitely not. The numbers you have written is minimum and maximum number ofof keys respectively, so for t = 2, nodes with 1, 2, 3 keys are allowed. For t = 3, nodes with 2, 3, 4, 5 keys are allowed.

Moreover, the root of the tree is allowed to have only 1 key.

It is possible to define (and implement) trees that have eg. 1 or 2 keys in a node (so-called 2-3 trees). The reason B-trees are defined to accommodate one more, is that this leads to faster performance. Particularly, this allows amortized O(1) (counting splitting and joining operations) delete and insert operations.

like image 183
jpalecek Avatar answered Jan 22 '23 02:01

jpalecek