C++ 二叉树中节点数和叶节点数的计算

C++ 二叉树中节点数和叶节点数的计算,c++,binary-tree,C++,Binary Tree,在计算我的二叉树的大小和我的二叉树中的叶子数量时有点麻烦。这应该是个简单的问题,但我还是很难弄明白 所以我得到了一个错误:“错误:没有匹配的函数来调用–BinaryNode::BinaryNode(BinaryNode*&)–”。这发生在第218、219、230、232行(我的.cpp文件)。所有这些都带有我头文件中的注释:bet.h:6:note:候选项是:BinaryNode::BinaryNode()BinaryNode::BinaryNode(const BinaryNode&)。在我的

在计算我的二叉树的大小和我的二叉树中的叶子数量时有点麻烦。这应该是个简单的问题,但我还是很难弄明白

所以我得到了一个错误:“错误:没有匹配的函数来调用–BinaryNode::BinaryNode(BinaryNode*&)–”。这发生在第218、219、230、232行(我的.cpp文件)。所有这些都带有我头文件中的注释:bet.h:6:note:候选项是:BinaryNode::BinaryNode()BinaryNode::BinaryNode(const BinaryNode&)。在我的头文件的第6行。这是代码。首先是头文件的开头(保存接口):


注意:我知道不建议将接口放在单独的文件中。但我必须这样做。

您需要从这些函数中进行递归调用,但您正在尝试创建一个节点并将该节点添加到整数中。您需要这样的更改:

count += leaf_nodes(t->leftNode); //BinaryNode(t->leftNode);    //line 230

您必须在对BinaryNode构造函数的调用中取消引用BinaryNode*指针

e、 g:

BinaryNode(*(t->leftNode));
或者提供将
BinaryNode*
作为参数的BinaryNode构造函数


这还不是全部,因为正如前面提到的,像
count+=BinaryNode(t->leftNode)不起作用,因为您试图将对象实例添加到整数中,这没有多大意义。

为什么要调用构造函数而不是在这些行中应用递归?这只是问题之一。事实上,他确实
count+=BinaryNode(…)
没有帮助,虽然你的答案确实修复了他现在的编译器错误,但它只会导致新的错误。
count += leaf_nodes(t->leftNode); //BinaryNode(t->leftNode);    //line 230
BinaryNode(*(t->leftNode));