c++ - 从二叉搜索树中删除节点时遇到问题
问题描述
我在从二叉搜索树中删除节点时遇到问题。
void BST::delete_node(Node* out)
{
Node* tmp;
Node* cur;
if(out->get_left() == NULL || out->get_right() == NULL) {
tmp = out;
}
else {
tmp = get_succ(out);
}
if(tmp->get_left() != NULL) {
cur = tmp->get_left();
}
else {
cur = tmp->get_right();
}
if(cur != NULL) {
cur->add_parent(tmp->get_parent());
}
if(tmp->get_parent() == NULL) {
root = cur;
}
else if(tmp == (tmp->get_parent())->get_left()) {
(tmp->get_parent())->add_left(cur);
}
else {
(tmp->get_parent())->add_right(cur);
}
if(tmp->get_key() != out->get_key()) {
out = nullptr;
}
}
这里似乎是什么问题,导致节点没有从二叉搜索树中删除。
解决方案
推荐阅读
- android - 如何为全局操作进行条件返回导航 - Android Nav 组件
- file - 如何从文件中提取字符串
- dolphindb - 如何在 DolphinDB 数据库中制作四分之一?
- javascript - 当元素在视口中时开始视差
- php - /usr/local/bin/wkhtmltopdf:Linux 中的权限被拒绝
- java - Spark:在日志记录中显示数据框内容(Java)
- python - 如何改进这种检查两个数字是正数还是负数的模式?
- android - 是否可以发布一个 json 对象包?
- python - 如何在 OpenCV 中获取轮廓检测的动态阈值
- python - 气流,在创建时启用 dag