我不知道,为什么_clear不从树中删除元素。可能,需要重写析构函数。
class Node {
T _val;
Node *_left;
Node *_right;
int _height;
explicit Node(T _val = T()) : _val(_val), _left(nullptr), _right(nullptr), _height(1) {};
friend class AVL_Tree<T>;
};
void AVL_Tree<T>::_clear(Node<T>*vertex) {
if(vertex != nullptr) {
_clear(vertex->_left);
_clear(vertex->_right);
delete vertex;
}
vertex = nullptr;
}
有保持NULL的链接节点,为什么它们不删除?
1条答案
按热度按时间fumotvh31#
问题就在这里:
您通过值传递了一个指向
Node
的指针,但是您希望更改该指针并将更改传播到函数之外。C++的方法是将一个 reference 传递给指向-Node
的指针:注意:标识符不要以下划线开始,这是为库实现者保留的。因此: