如何删除LCRS树的“最后一项”?

时间:2018-09-26 00:18:15

标签: c++ data-structures tree

我正在尝试建立一个左孩子右兄弟姐妹树,但是我的代码中有一个错误。

该错误发生在我要删除树的“最后一项”时。在此little project的主要示例中,如果我“擦除”数字9并在其后使用print(),则将显示数字0而不是9,但不应显示任何数字。

void remove(T value){
        auto *node = this->search_node(value);

        if(node == NULL){
            std::cout << std::endl << "The value is not in the tree" << std::endl;
        } else if(node == this->root) {
            this->root = NULL;
        } else {
            if(node->sibling == NULL && node->child == NULL) {
                // Works, but attribute "0" to the node->value when I print
                *node = NULL; 
            } else if(node->sibling == NULL && node->child != NULL){
                *node = *node->child;
            } else {
                *node = *node->sibling;
            }
        }
    }

我知道我并没有真正删除要删除的值,因此也欢迎提供提示和建议。

0 个答案:

没有答案