c++ - 如果我想使用该结构中的字段作为参数,如何使用该结构内部的递归函数
问题描述
我有一个 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
推荐阅读
- android - 如何使用 Google Meet、AnyDesk 保护应用免受屏幕共享并防止屏幕共享
- mysql - 正则表达式在 mysql 中获取 JSON 的值
- python - 将两个相同的列合并为一列时加入两个数据框
- python - Simpleaudio 没有在 Raspberry 上运行表单终端
- arrays - 快速将带有对象的json数组添加到可编码模型中
- python - Pandas:无法从先前合并的多级数据框中处理列
- latex - biblatex:自定义参考书目条目
- r - 从csv文件的第一行删除其他符号?
- c# - C# OpenXML:仅在除最后一个文件之外的所有文件中获取文件中的第一个超链接
- combobox - 根据组合框将文本框值添加到借方/贷方列