0

コードに遅延削除を実装したいと考えています。ノードがいつ「削除」されたか、または削除済みとしてマークされたかを追跡するために、ブール値を追加しました。実際に変更する方法がわかりません。これが私の削除と挿入の方法です。削除しようとしましたが、挿入はしませんでした。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;
}
4

1 に答える 1