我认为这是O(n)吗?我在递归时非常糟糕。有人可以确认,或向我解释一下吗?
Counter(a)
if hasLeft(a)
return Counter(left(a) + Counter (right(a))
else
return 1
基本上,如果树中没有左边节点,则返回0.如果有左边的注释,则返回1.
谢谢!
答案 0 :(得分:1)
如果是(二进制)树,因为图中没有任何循环,它只检查每个节点一次,所以它是O(n)
。
答案 1 :(得分:1)
您的代码不会执行宣传的内容。你说你希望它在有一个左节点时返回1,如果没有左节点则返回0。但是你的代码是:
Counter(a)
if hasLeft(a)
return Counter(left(a)) + Counter(right(a))
else
return 1
如果根目录中没有左节点,则返回1,但不检查树的其余部分。此代码不会检查整个树,而是停在没有左节点的第一级。
你真的想做什么?