对于二叉搜索树T,用一颗子树v代替子树u的操作TANSPLANT(T,u,v).
TANSPLANT(T, u, v)
if u.p == NIL
T.root = v
elseif u == u.p.left
u.p.left = v
else u.p.right = v
if v != NIL
v.p = u.p
删除二叉搜索树T中的一个结点z,该节点z有三种情况:
- z没有或只有一个右儿子
- z.p只有一个左儿子
- z有两个儿子(在其右子树中找出含有最小关键字值的节点即中序后继)
- z的中序后继为z的右儿子
- z的中序后继不是z的儿子
TREE-DELETE(T,z)
if z.left == NIL
TRANSPLANT(T,z,z.right)
elseif z.right == NIL
TRANSPLANT(T,z,z.left)
else y = TREE-MINIMUM(z.right)
if y.p != z
TRANSPLANT(T, y, y.right)
y.right = z.right
y.right.p = y
TRANSPLANT(T, z, y)
y.left = z.left
z.left.p = y