C二叉树搜索并计算一个条件发生的次数

8i9zcol2  于 2023-01-04  发布在  其他
关注(0)|答案(1)|浏览(108)

我需要遍历一个二叉树并计算一个条件发生了多少次。我尝试过如果条件发生了,同时返回两个叶子和1,否则返回0。有什么想法吗?

int countChoose(BinTree *root) {
    if (root == NULL)
        return 0;
    updateTask(root);
    if (root->whatToDo == COUNT_MALE_ORDER) {
        if (root->gender == 'M') {
            return 1 + countChoose(root->left) +
                       countChoose(root->right);

        }
        return 0 + countChoose(root->left) +
                   countChoose(root->right);
    }

}
ql3eal8s

ql3eal8s1#

在不知道问题的确切原因的情况下,最后一个return语句似乎应该移到外部if语句之外,即:

int countChoose(BinTree *root) {
    if (root == NULL)
        return 0;
    updateTask(root);
    if (root->whatToDo == COUNT_MALE_ORDER) {
        if (root->gender == 'M') {
            return 1 + countChoose(root->left) +
                    countChoose(root->right);
        }
    }
    
    return 0 + countChoose(root->left) + countChoose(root->right);
}

相关问题