考虑代码:
int Tree::height(tree *node) {
if (!node) return -1;
return 1 + max(height(node->left), height(node->right));
}
这种方法的复杂性是什么? O(n)
或O(log(n))
?
我认为它是O(n)
,因为在最坏的情况下我们会检查所有节点,不是吗?
您能举例说明更好的实施吗?
由于
答案 0 :(得分:2)
我认为你在所有情况下都在检查所有节点,而不仅仅是最坏的情况。是的,O(N)。