c++ - 需要通过函数指针访问类对象 - 二叉搜索树类创建相关

标签 c++ binary-tree binary-search-tree

使用递归创建二叉搜索树的遍历。

void inOrder(void (*inOrderPtr)(T&)) 
{ 
    if(this->left != NULL) 
        inOrder((*inOrderPtr)(this->left)); 
    inOrderPtr(this->data); 
    if(this->right != NULL) 
        inOrder((*inOrderPtr)(this->right)); 
} 

这是函数。现在这显然是错误的。这个函数是这样调用的:

first.inOrder(print_vals);

首先是对象,print vals 只是一个函数,打印对象中的数据是什么。每个对象都有三个值,数据、左和右。我如何使用该函数实际访问这些项目?

最佳答案

看起来对 inOrderPtr(this->data) 的调用只是将树节点的 data 成员传递给 print_vals功能。如果您想访问 leftright 元素,请使用 inOrderPtr(*this)。您必须更改各种声明才能编译,例如 inOrderPtrprint_vals 的声明。如果没有看到您的其余代码,很难说出您需要将它们更改为什么。

另一方面,在我看来,您可能希望更像这样编写递归调用:

this->left->inOrder(inOrderPtr);

不过,我正在对您的实现做出假设。

关于c++ - 需要通过函数指针访问类对象 - 二叉搜索树类创建相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/206498/

相关文章:

c++ - 如何将 C 生成文件移植到 C++ 生成文件?

java - 删除二叉树中的节点

python - 返回一个包含内部节点数和叶子数的元组

algorithm - 如何证明从最小节点开始在BST中找到n-1次后继是O(n)?

java - 如何插入二叉搜索树上的下一个可用节点?

c++ - C++ 中的学生 T 分布

c++ - 类型之间是否有类型特征检查包含?

c++ - 是否可以在进程中禁用 setlocale()?

algorithm - 查找多个间隔之间的重叠

c - 在二叉树中寻找共同祖先