opyrootkeyitempkeytempkey
um将小兄弟结点的最大的那个移动到双亲中iftempptrtempkey
um将兄弟结点的子结点也复制过来pptr0tempptrtempkey
umtempptrtempkey
umpare
tp修改指向双亲的结点tempptrtempkey
umNULLtempkey
umretur
OKifirootkey
umrootptri1key
ummid当i小于最大数量的时候就可以向右借temprootptri1pkey
um制过来KeyTypeCopyrootkeyi1tempkey1过来fork1ktempkey
umkKeyTypeCopytempkeyktempkeyk1将后面的结点向前移动一位iftempptr0pptrpkey
umtempptr0tempptr0pare
tp修改指向双亲的结点fork0ktempkey
umk将子结点向前移动tempptrktempptrk1tempptrk1NULLtempkey
umretur
OKretur
FALSE合并结点将右兄弟删除一个结点将删除的结点的子结点置为空将右兄弟的结点复制增加结点的个数KeyTypeCopypkeypkey
umrootkeyi1将根结点的值复将左兄弟删除一个结点
fStatuscombi
eBTreerootBTreepi
tkipositio
p取得p在双亲中的位置i
tmidm121交换的条件BTreep2ifi0i1如果是第一个位置
p2rootptripkey
um增加一个结点KeyTypeCopypkeypkey
umrootkeyi将双亲的结点复制下来ifp2ptr0pptrpkey
ump2ptr0将兄弟的子结点也复制过来p2ptr0pare
tp修改双亲forkikrootkey
umk将双亲的结点向前移动一位KeyTypeCopyrootkeykrootkeyk1pkey
umpkeypkey
ump2key1ifp2ptr1pptrpkey
ump2ptr1将兄弟的子结点也复制过来p2ptr1pare
tprootkey
umfreep2p2NULLfork1krootkey
umkrootptrkrootptrk1将双亲结点子结点向前移动rootptrk1NULLelseifi0p2rootptri1p2key
umKeyTypeCopyp2keyp2key
umrootkeyi复制根结点的值到子结点中ifpptr0p2ptrp2key
umpptr0pptr0pare
tp2修改指向双亲的结点forkikrootkey
umkKeyTypeCopyrootkeykrootkeyk1将结点前移rootptrkrootptrk1将子结点前移修改指向双亲的结点
frootptrk1NULLrootkey
umfreeppp2retur
OK与右最左结点交换voidexcha
geBTreeTi
tiBTreepTUseruserNULLifpptrippptriwhilepptr0ppptr0whileTkeyiuseruserTkeyiuserfreeuserKeyTypeCopyTkeyipkey1whileipkey
um将该结点后面的数据后移KeyTypeCopypkeyipkeyi1将后一个数据复制到前一个数据ipr