您的位置:首页 > 其它

BST删除重复键实现,非递归实现

2014-06-12 16:29 218 查看
PBSTNode deleteRRR(PBSTNode h,Key v)

{//删除一个匹配的键值,如果有重复的键,将删除

if (h == z)
{

return h;
}

PBSTNode p = h;

PBSTNode parent =
NULL;

while (p != z)
{

if (p->data < v)
{
parent = p;
p = p->right;
}

else if (p->data > v)
{
parent = p;
p = p->left;
}

else if (p->data == v)
{

if (parent)
{

PBSTNode x = p;

if (parent->data > v)
{
parent->left =
joinLR(p->left,p->right);
p = parent->left;
}

else if (parent->data < v)
{
parent->right =
joinLR(p->left,p->right);
p = parent->right;
}

free(x);
}

else
{

PBSTNode x = p;
h =
joinLR(p->left,p->right);

free(x);
p = h;
}
}
}

return h;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: