[英]Deleting node from binary tree
A binary tree of abstract classes.抽象类的二叉树。 I have three deleting methods, the first is for user menu, and others are recursive.我有三种删除方法,第一种是用户菜单,其他是递归的。 I have a trouble with decrementing nodes' count after deleting one.删除一个节点后,我遇到了减少节点计数的问题。 Help please, where should I write "r->count--"?请帮忙,我应该在哪里写“r->count--”?
Node* Del(Node *t, Node *t0) {
if (t->left != nullptr) {
t->left = Del(t->left, t0);
return t;
}
t0->o = t->o;
Node *x = t->right;
delete t;
return x;
}
Node* deleteNodes(Node *r, Node *elem, bool &deleted) {
bool del;
if (r == nullptr) {
deleted = false;
return r;
}
if (equal(elem->o, r->o) < 0) {
r->left = deleteNodes(r->left, elem, del);
deleted = del;
return r;
}
else if (equal(elem->o, r->o) > 0) {
r->right = deleteNodes(r->right, elem, del);
deleted = del;
return r;
}
deleted = true;
if (r->left == nullptr && r->right == nullptr) {
delete r;
return nullptr;
}
if (r->left == nullptr) {
Node *x = r->right;
delete r;
return x;
}
if (r->right == nullptr) {
Node *x = r->left;
delete r;
return x;
}
r->right = Del(r->right, r);
return r;
}
You should place it in the code where you have found a node to delete.您应该将它放在找到要删除的节点的代码中。 This is also where you set deleted
to true
:这也是您将deleted
设置为true
地方:
So:所以:
deleted = true;
r->count--;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.