如果我想使用该结构中的字段作为参数,如何从结构内部使用递归函数
我有一个 AVL 树(我不会发布所有代码,因为它没有意义),我想使用递归函数来删除它。代码如下所示:
template <typename T>
struct AVL
{
Nod<T>* root;
....
void clear();
....
};
template<typename T>
inline void AVL<T>::clear()
{
....
if (root == nullptr)
{
return;
}
clear(root->left); //I can't do this because clear doesn't take parameters
clear(root->right);
....
}
为了删除我的节点,我想递归调用这个函数,不带参数,它必须每次都从该结构内的根开始。但是如果我在没有参数的情况下定义函数,我将无法调用 clear(root->left)。
所以,我的问题是:
如何从根字段开始递归调用此函数?
回答
您可以将其更改clear(root->left)为root->left->clear()与正确的节点相同,但您需要nullptr在调用之前检查它们是否为clear