【发布时间】:2022-01-21 08:22:53
【问题描述】:
我正在尝试在二叉搜索树中实现删除功能。我知道这三个步骤是:
-
识别要删除的节点和最深的节点。
-
用最深节点的数据替换其数据。
-
删除最深的节点。
我尝试这样实现,但删除不起作用
我的尝试有什么问题,我该如何解决?
TREE *delete(TREE *t,int d) {
TREE *temp=NULL;
if(t==NULL)
return NULL;
else if(d>t->data)
return delete(t->right,d);
else if(d<t->data)
return delete(t->left,d);
else {
if(t->right && t->left) {
temp=min(t->right);
t->data=temp->data;
return delete(t->right,t->data);
}
else {
temp=t;
if(t->left==NULL)
t=t->right;
else if(t->right==NULL)
t=t->left;
free(temp);
}
return t;
}
}
【问题讨论】:
-
请正确格式化您的代码。
-
如果我将链接设置为空,那么它会显示垃圾值
标签: c binary-search-tree