A B-tree or B+ tree is a balanced multiway search tree: every leaf is at the same depth, and nodes (except the root) are at least half full. Insertions split a full node and deletions merge or redistribute.
Conventions used here. The order p of an internal node is its maximum number of child pointers (so at most p−1 keys). Height h is the number of levels, counting the root as level 1 and the leaves as level h. Minimum occupancy: a non-root internal node has at least ⌈p/2⌉ children; the root has at least 2 children (if it is not a leaf); a leaf holding at most q keys has at least ⌈q/2⌉ keys. Some definitions state occupancy differently, so check the question.
KEYS STORED IN A B+ TREE OF HEIGHT H
max keys (B+)=qph−1,min keys (B+)=⌈2q⌉⋅2⌈2p⌉h−2 (h≥2)
Max: every node full, so ph−1 leaves of q keys. Min: the root has 2 children and every other internal node ⌈p/2⌉, giving 2⌈p/2⌉h−2 leaves, each with ⌈q/2⌉ keys.
KEYS STORED IN A B-TREE OF HEIGHT H
max keys (B-tree)=ph−1,min keys (B-tree)=2⌈2p⌉h−1−1
Max: all (ph−1)/(p−1) nodes full with p−1 keys each. Min: the root has 1 key (2 children) and every other node ⌈p/2⌉−1 keys.
BLOCK ACCESSES FOR AN EQUALITY SEARCH
accesses (B+ tree, record via leaf pointer)=h+1
One block per level down to the leaf, plus one to read the data record. Leaves holding the record itself need only h.
Range search c1≤a≤c2 on a B+ tree: h accesses to reach the leaf holding c1, one more for each further leaf in the range (following the leaf chain), then, when leaves hold record pointers, up to one data-block access per matching record. It costs fewer if the file is also ordered on a.
Splitting on insertion. When a B+ tree leaf already holding q keys receives one more, it splits into two leaves of ⌈(q+1)/2⌉ and ⌊(q+1)/2⌋ keys (which half gets the extra key is a convention, so follow the question), and the smallest key of the new right leaf is copied up into the parent. When an internal node overflows, it splits and its middle key moves up: it stays in neither half. In a B-tree every split works like the internal-node split, with the middle key moving up. A split can propagate upward; when the root splits, a new root is created, and this is the only way the height grows.