C++ 计算BST中的偶数总数
我试图计算BST中有偶数的叶子总数。C++ 计算BST中的偶数总数,c++,tree,C++,Tree,我试图计算BST中有偶数的叶子总数。 示例:根-->2 4 6 8 9 输出:4个有偶数的叶子 以下是我所做的: struct BSTNode { BSTNode* left; BSTNode* right; int data; }; int CountingTotalEven(BST* root) { int count = 0; count++; CountingTotalEven(BST* root); return
示例:根-->2 4 6 8 9
输出:4个有偶数的叶子 以下是我所做的:
struct BSTNode
{
BSTNode* left;
BSTNode* right;
int data;
};
int CountingTotalEven(BST* root)
{
int count = 0;
count++;
CountingTotalEven(BST* root);
return count;
}
我的程序输出错误的号码,我不知道我做错了什么
int count = 0;
count++;
CountingTotalEven(BST* root);
return count;
目前该代码中有三个主要问题。首先,将递归函数中的count初始化为非静态变量。所以每次调用这个递归函数时,count都被初始化为0
其次,您再次调用了根上的递归函数。您要做的是递归地调用函数的左右子树(读:树遍历)
第三,您没有检查值是否为偶数
static int count = 0;
if(count%2 == 0)
count++;
CountingTotalEven(root->left);
CountingTotalEven(root->right);
return count;
你的问题是什么?你的实际产出和期望产出是什么?你想用递归来做吗?似乎您缺少了一些内容
CountingTotalEven
每次将计数声明为0,并且从不将其传递给下一次调用,因此计数将始终为1。是的,我使用递归欢迎使用堆栈溢出!请不要破坏你的帖子,为别人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅: