使用树和递归查找时间复杂度

时间:2011-10-26 19:14:19

标签: algorithm recursion

我认为这是O(n)吗?我在递归时非常糟糕。有人可以确认,或向我解释一下吗?

Counter(a)
    if hasLeft(a)
        return Counter(left(a) + Counter (right(a))
    else
        return 1

基本上,如果树中没有左边节点,则返回0.如果有左边的注释,则返回1.

谢谢!

2 个答案:

答案 0 :(得分:1)

如果是(二进制)树,因为图中没有任何循环,它只检查每个节点一次,所以它是O(n)

答案 1 :(得分:1)

您的代码不会执行宣传的内容。你说你希望它在有一个左节点时返回1,如果没有左节点则返回0。但是你的代码是:

Counter(a)
    if hasLeft(a)
        return Counter(left(a)) + Counter(right(a))
    else
        return 1

如果根目录中没有左节点,则返回1,但不检查树的其余部分。此代码不会检查整个树,而是停在没有左节点的第一级。

你真的想做什么?