//二叉排序树的插入和删除
status searchBST(BiTree T, KeyType key, BiTree f, BiTree p) //查
{
if(!T)p = f;return false;
if(key == T.data.key)
p = T;return true;
else if(key > t.data.key)
return searchBST(T->rchild, key, T, p);
else
return searchBST(T->lchild, key, T, p);
}
status InsertBST(BiTree T, elemtype e)//增
{
if(!searchBST(T, e.data.key, NULL, p))
{
s = (BiTree *)malloc(sizeof(BiTree));
s.data = e;
s->lchild = s->rchild = NULL;
if(!p)T = s;
else if(p.data.key>key)
p->lchild = s;
else
p->rchild = s;
return true;
}
return false;
}
status deleteBST(BiTree T, KeyType key)//删
{
if(!T)return false;
else{
if(T.data.key == key)
return delete(T);
else if(T.data.key > key)
return deleteBST(T->lchild, key);
else
return deleteBST(T->rchild, key);
}
}
status delete(BiTree T)
{
if(!T->rchild)
q = T; T = T->lchild;free(q);
else if(!T->lchild)
q = T; T = T->rchild;free(q);
else
{
q = T; s = T->lchild;
while(s->rchild)q = s;s = s->rchild;
T->data = s->data;
if(q!=T)
q->rchild = s->lchild;
else
q->lchild = s->lchild;
delete s;
}
return true;
}数据结构笔记-二叉排序树的增删查
最新推荐文章于 2023-02-18 21:22:10 发布
本文介绍了二叉排序树的基本操作实现,包括查找、插入及删除节点的具体算法流程。通过递归方式实现了这些核心功能,并详细展示了如何维持二叉排序树的特性。

3442

被折叠的 条评论
为什么被折叠?



