C++ 二叉树节点计数有问题
当在公共场合调用节点计数函数时,我得到了不兼容的声明,而在私有场合,我的返回与函数不匹配,我无法调用测试驱动程序 Float,int,void,bool(我知道这很愚蠢) CPP Header(我想我需要将其公开,以便调用测试驱动程序,但我只能从Private在CPP中声明。) 司机C++ 二叉树节点计数有问题,c++,binary-tree,C++,Binary Tree,当在公共场合调用节点计数函数时,我得到了不兼容的声明,而在私有场合,我的返回与函数不匹配,我无法调用测试驱动程序 Float,int,void,bool(我知道这很愚蠢) CPP Header(我想我需要将其公开,以便调用测试驱动程序,但我只能从Private在CPP中声明。) 司机 cout << "Total Number of Nodes " << endl; tree.count(); cout << endl; cout 该操作返回一个int(至少
cout << "Total Number of Nodes " << endl;
tree.count();
cout << endl;
cout
该操作返回一个int(至少是一个数字),例如,它必须有一个返回数字的签名
int BinaryTree::count(TreeNode* root)
你的定义也很复杂,毫无疑问
int BinaryTree::count(TreeNode* root) {
return (root == NULL)
? 0
: count(root->left) + count(root->right) + 1;
}
因为它不修改实例,所以它是常量
int BinaryTree::count(TreeNode* root) const {
return (root == NULL)
? 0
: count(root->left) + count(root->right) + 1;
}
拥有
tree.count()
如果没有arg并明显写入计数,则需要执行其他操作,如
void BinaryTree::count() const {
cout << count(..the tree node..);
}
在某个地方coutBinaryTree::count
请求一个TreeNode*
作为参数,但tree.count()代码>作为无参数。如果TreeNode是BinaryTree内部的,则需要一个不带arg的公共操作,以及一个由公共版本调用arg的私有操作void BinaryTree::count(TreeNode*root){If(root==NULL)返回0;
-显然是错误的。您的函数返回void
(无),但尝试返回一个值(整数).我可以建议你读一本(或两本)吗.?有些基础知识你还没有掌握。@bruno我对类还很陌生。我已经把它改成了一个int函数,除了测试驱动程序外,一切似乎都正常。我该如何把tree.count变成一个参数呢?@TylerKanz请回答你的问题,并展示二进制树
类是如何定义的。看来>BinaryTree::count
可能是私有的
,因此不能在类外直接调用,但这只是猜测。啊,明白了!谢谢!@πάνταῥεῖ 我知道我们不是一直都同意,我可能已经告诉过你我来这里是为了帮忙而不是踢屁股(我说的是OP,当然不是关于你的^^).对我来说,这个问题并不是离题,我们不会把离题的程度放在同一个水平上:-)@TylerKanz不,这不是一个好问题。在提问之前,你已经错过了发布研究、调试和其他一些事情。@πάνταῥεῖ 对不起,我冒犯了你,违反了规则。就像我说的,我对这件事还不熟悉。@πάνταῥεῖ 我不支持任何人。OP缺少一个最小的完整解决方案。但是,这个答案的下选者可以出现并警告布鲁诺不要这样做或等待MCVC。我发现匿名DV非常糟糕。另一方面,答案一点也不坏。
int BinaryTree::count(TreeNode* root) {
return (root == NULL)
? 0
: count(root->left) + count(root->right) + 1;
}
int BinaryTree::count(TreeNode* root) const {
return (root == NULL)
? 0
: count(root->left) + count(root->right) + 1;
}
void BinaryTree::count() const {
cout << count(..the tree node..);
}
// I use a _struct because fields accessible by BinaryTree
// but may be a class and BinaryTree is a friend class etc
struct TreeNode {
// ...
TreeNode * left;
TreeNode * right;
// ...
};
class BinaryTree {
public:
// ...
int count() const { return count(tree); }
// ...
private:
// ...
int count(TreeNode *) const;
// ...
TreeNode * tree;
// ...
};
int BinaryTree::count(TreeNode* root) const {
return (root == NULL)
? 0
: count(root->left) + count(root->right) + 1;
}