C++ 递归需要更多时间在返回语句中进行函数调用

问题描述 投票:0回答:0

问题陈述: 给定两个二叉树 p 和 q 的根,编写一个函数来检查它们是否相同。

我尝试在 leetcode(问题 100)上提交以下代码:

bool isSameTree(TreeNode* p, TreeNode* q) {
        if(!p && !q) return true;
        if(p && q && p->val==q->val) {
            bool l = isSameTree(p->left, q->left);
            bool r = isSameTree(p->right, q->right);
            return l&&r; 
        }
        return false;
    }

这需要 0 毫秒。

bool isSameTree(TreeNode* p, TreeNode* q) {
        if(!p && !q) return true;
        if(p && q && p->val==q->val) {
            return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
        }
        return false;
    }

这需要 4 毫秒。

有人可以解释为什么吗?

我想知道为什么会有巨大的运行时间差异?

c++ recursion runtime
© www.soinside.com 2019 - 2024. All rights reserved.