C ++并非所有控制路径都返回一个值

时间:2015-02-21 00:42:10

标签: c++

我有一个简单的问题。我正在实现一个通用的二叉搜索树。

我的功能是:

template<class T>
T TreeSet<T>::minHelper(TreeNode<T>* rootNode) const {
    if (rootNode->left != nullptr)
        minHelper(rootNode->left);
    else
        return rootNode->data;
}

这是一个递归函数。我不能在if路径中放置一个return语句,但是我不知道如何在最后返回一个可以解决该问题的假人。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您只是在return路径中的语句之前添加if,我认为您的功能将按预期运行。一旦递归结束(函数进入else路径),返回的任何T对象将向上传播递归调用的函数。完全如此:

template<class T>
T TreeSet<T>::minHelper(TreeNode<T>* rootNode) const {
    if (rootNode->left != nullptr)
        return minHelper(rootNode->left);
    else
        return rootNode->data;
}