C++ 计算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

我试图计算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 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在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅: