二叉树:递归函数什么时候需要返回值?

二叉树:递归函数什么时候需要返回值?

700. 二叉搜索树中的搜索

当初学数据结构的时候也弄不清楚,今天看到一句话很好的解释了:
「如果需要搜索整颗二叉树,那么递归函数就不要返回值,如果要搜索其中一条符合条件的路径,递归函数就需要返回值,因为遇到符合条件的路径了就要及时返回。」

比如:
在这里插入图片描述
他并非要遍历全部的二叉树,而是遍历到2就返回了,并非遍历到了全部二叉树.
因此,代码如下

class Solution {
    
    
public:
    TreeNode* searchBST(TreeNode* root, int val) {
    
    
        if(root == NULL || root->val == val)
        return root;
        if(val < root->val)
        return searchBST(root->left, val);
        if(val > root->val)
        return searchBST(root->right, val);

        return NULL;
    }
};

如果 不在递归时候return,就需要稍微做点修改:用临时变量去替代返回的作用,这样相对也好理解。

class Solution {
    
    
public:
    TreeNode* searchBST(TreeNode* root, int val) {
    
    
        if(root == NULL || root->val == val)
        return root;
        TreeNode*cur = NULL;
        if(val < root->val)
        cur = searchBST(root->left, val);
        if(val > root->val)
        cur = searchBST(root->right, val);
        return cur;
    }
};

猜你喜欢

转载自blog.csdn.net/cckluv/article/details/112966766