我正在尝试建立一个左孩子右兄弟姐妹树,但是我的代码中有一个错误。
该错误发生在我要删除树的“最后一项”时。在此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;
}
}
}
我知道我并没有真正删除要删除的值,因此也欢迎提供提示和建议。