//
// Binary Tree Remove algorith
//
remove (data, node &*root)
{
if (root == 0)
return;
if (data < root->data)
remove (data, root->left)
else if (data > root->data)
remove (data, root->right)
else
{
if (root->left != 0 &&
root->right != 0)
{
node *temp = FindMin
(root->right)
root->data =
temp->data
remove (temp->data,
root->right)
}
else if (root->left == 0 &&
root->right == 0)
{
delete root
root = 0
}
else
{
node *temp = root
if (root->left != 0)
root
= root->left
else
root
= root->right
delete temp
}
}
}
//
// Binary Tree FindMin algorithm
//
node *FindMin (node *root)
{
if (root->left == 0)
return root
return FindMin (root->left)
}