Deletion From a B-Tree (pseudo code)
if (the entry to remove is not in a leaf) then swap it with its successor;
while (currentNode underflow)
try to redistribute entries from an immediate sibling into currentNode via the parent node;
if (impossible) then merge currentNode with a
sibling and one entry from parent;
currentNode := parent of currentNode;