Time complexity 用master方法计算时间复杂度

Time complexity 用master方法计算时间复杂度,time-complexity,Time Complexity,有人能用master方法解释下面的时间复杂性吗 int sum(Node node) { if (node == null) { return 0; } return sum(node.left) + node.value + sum(node.right); } 我知道a的值是2,但我很难识别b和d。b=1,d=cO(n)吗?在这种情况下,任何人都可以解释如何识别b和d这是一个用于对二叉树中的所有节点求和的函数。首先从根部向下离开,然后向上(堆栈展开)

有人能用master方法解释下面的时间复杂性吗

int sum(Node node) {
    if (node == null) {
        return 0;
    }
    return sum(node.left) + node.value + sum(node.right);
}

我知道a的值是2,但我很难识别b和d。b=1,d=cO(n)吗?在这种情况下,任何人都可以解释如何识别b和d这是一个用于对二叉树中的所有节点求和的函数。首先从根部向下离开,然后向上(堆栈展开)。因此,时间复杂度为O(N),因为它需要至少访问每个节点一次。

这是一个用于将二叉树中的所有节点相加的函数。首先从根部向下离开,然后向上(堆栈展开)。因此,时间复杂度为O(N),因为它需要至少访问每个节点一次。

好吧,为了使递归关系不那么复杂,我们可以假设一个具有
2^i
节点的平衡二叉树,因此我们得到
T(N)=2T(N/2)+1
(忽略基本情况)的递归


从上面,我们可以找到a=2,b=2,c=0,因为1是O(1)。应用master方法,它通过了案例1,我们可以得到复杂度为T(n)=Θ(nlog22)或O(n)好的,为了使递归关系不那么复杂,我们可以假设一个具有
2^i
节点的平衡二叉树,因此我们可以得到
T(n)=2T(n/2)+1
的递归(忽略基本情况)


从上面,我们可以找到a=2,b=2,c=0,因为1是O(1)。应用主方法,它通过案例1,我们可以得到我们的复杂度为T(n)=Θ(nlog22)或O(n)

代码中
a是什么,在哪里?a是子问题的数量,B是每个子问题的大小,D是f(n)(即)在递归调用之外完成的工作成本在您的代码中
a
是什么?a是子问题的数量,B是每个子问题的大小,D是f(n)(即)在递归调用之外完成的工作成本