没有全局变量或函数参数的递归调用

时间:2017-05-04 20:35:36

标签: c++ recursion binary-tree

所以我们在二元搜索树中计算节点的作业,但我们不允许使用全局变量或函数参数,因为我们得到了一个我们不应该改变的预制模板。我知道如何使用全局变量和函数参数来做到这一点,但我不知道如何在没有它的情况下这样做,因为我不能使用局部变量。

我的代码现在:

int count() const
        {
            int st = 1;
            if (left != NULL) {
                st++;
                left->count();
            }
            if (right != NULL) {
                st++;
                right->count();
            }
            return st;
        }

1 个答案:

答案 0 :(得分:2)

您可以将递归调用提供的返回值总结为相应的子树(如果可用):

    int count() const
    {
        if (left != NULL && right != NULL)
           return 1+left->count()+right->count();
        else if (left != NULL)
           return 1+left->count();
        else if (right != NULL)
           return 1+right->count();
        else
           return 1;
    }