gpt4 book ai didi

c++ - 如何在 C++ 类中递归调用函数方法?

转载 作者:行者123 更新时间:2023-12-01 14:39:10 26 4
gpt4 key购买 nike

所以,我不久前开始学习和阅读有关 OOP 的知识,我一直在使用类和对象实现我知道的所有数据结构,只是为了进行整体练习,并熟悉在 C++ 中使用 OOP。

我正在实现树数据结构,我一直想知道如何递归调用一个方法(我知道我必须传入一个参数),这样当我在 main 中创建一个对象并调用一个特定的方法它的编写方式如下 a.inorder(); 而不是 a.inorder(root) 因为 root 是私有(private)属性。

这可能吗?

我的代码:

#include<iostream>
using namespace std;

struct node
{
int data;
node* left;
node* right;
};

class tree
{
private:
node* root;
public:
tree();
tree(int val);

void insert(int val);
void preorder();
void postorder();
void inorder();
int count();
};

tree::tree() : root { NULL }
{
}
tree::tree(int val)
{
root = new node;
root->data = val;
root->left = root->right = NULL;
}

void tree::insert(int val)
{
if (!root)
{
root = new node;
root->data = val;
root->left = root->right = NULL;
}

else
{
node* t = root;
node* p = NULL;

while (t)
{
p = t;

if (val > root->data)
t = root->right;
else
t = root->left;
}

t = new node;
t->data = val;
t->left = t->right = NULL;

if (p->data > t->data)
p->left = t;
else
p->right = t;
}
}
void tree::preorder()
{
if (root)
{

}
}

最佳答案

在您的设计中,节点 引用自身。由于它是递归的 node 对象,您可以在 node 上定义递归方法:

struct node
{
int data;
node* left;
node* right;

void preorder() {
//...
left->preorder();
right->preorder();
}
};

然后,tree::preorder() 将调用 root->preorder()

关于c++ - 如何在 C++ 类中递归调用函数方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62458871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com