如何找到这个递归函数的时间复杂度?

时间:2018-06-09 16:06:41

标签: recursion time-complexity

我试图找到下面的递归函数的时间复杂度。我试图绘制树,但它很混乱,因为在if条件下,函数被调用一次,否则两次。

为了给出一些上下文,在树的节点上调用该函数。任务是计算每个节点的最大评级。规则是,如果您将某个节点添加到评级中,则无法将其子节点添加到节点,但如果您不添加它,则可以添加或不添加哪些子节点。

这是功能:

static int solve(Node node, boolean take) {     
    int result;
    if(take) {          
        result = node.rating;
        for(Node child : node.children) {
            result += solve(child, false);
        }
        return result;
    }

    result = 0;
    for(Node child : node.children) {
        result += Math.max(solve(child, true), solve(child, false));
    }
    return result;
}

0 个答案:

没有答案