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:
t - 1
keys and has t
children.2*t - 1
keys and has 2*t
children.So you get for t = 2:
t - 1
= 1 keys and t = 2 children2*t - 1
= 3 keys and 4 childrenFor t = 3
t - 1
= 2 keys and t = 3 children2*t - 1
= 5 keys and 6 childrenNow 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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With