我想在我的代码中实现延迟删除。我添加了一个布尔值来跟踪节点被“删除”/标记删除的时间。我不确定实际改变的方法。这是我的删除和插入方法。我试图删除,但不是插入。我确信insert方法必须进行大量检查。请指教。
template<class Comparable>
bool search_tree<Comparable>::remove(treeNode<Comparable> * &root,
const Comparable &x) {
if (root == NULL)
return false;
if (x < root->data)
return remove(root->lftChild, x);
if (root->data < x)
return remove(root->rtChild, x);
root->deleted = true;
return true;
}
template<class Comparable>
bool search_tree<Comparable>::insert(treeNode<Comparable> * &root,
const Comparable &x) {
if (root == NULL) {
root = new treeNode<Comparable>(x, NULL, NULL);
return true;
} else if (x < root->data)
return insert(root->lftChild, x);
else if (root->data < x)
return insert(root->rtChild, x);
return false;
}
答案 0 :(得分:0)
您的插入函数应该按原样工作,除非x等于已删除的项目,否则它不会被插入。如果x等于root-&gt;数据,则需要确保删除为false。
你的删除功能看起来应该可以正常工作。