Answer:
Deleting a record on a B-tree consists of three main events: 
- Searching the node where the key to be deleted exists
- Deleting the key
- Balancing the tree if required
Explanation:
 q = NULL;
    p = tree;
    while (p) {
        i = nodesearch(p, key);
        q = p;
        if (i < used(p) -1 && key == k(p,i)) {
            found = TRUE;
            position = i;
            break;
        }
        p = son(p,i);
    }
    if (!found)
    else if (subtree(p)) {
          if (used(p) > ((n-1)/2)+1)
          delkey (p, position, key);
        else {
            replace (p, position, fsucc(p));
            p0 r1 p1 r2 p2 r3 ……. pn-1 rn-1 pn
            q = &fsucc(p);
            qpos = index of fsucc;
            if (used(rbrother(p)) > ((n-1)/2)+1)
                replace (q, qpos, sonsucc(q));
            else
                while (q && used(q) < (n-1)/2) {
                    concatenate(q, brother(q));
                    q = father(q);
                }
        }
    }
    else
    delkey(p, position, key);
}