Попытка выяснить, почему сложность О (п) для этого кода:Сложность следующего рекурсивного кода
int sum(Node node) {
if (node == null) {
return 0;
}
return sum(node.left) + node.value + sum(node.right);
}
Узел:
class Node {
int value;
Node left;
Node right;
}
Это из CCI книги. Разве это не должно быть O (2^n), поскольку он выполняет итерацию через каждый узел?
Но это одно O (2^п), что для меня ясно, почему:
int f(int n) {
if (n <= 1) {
return 1;
}
return f(n - 1) + f(n - 1);
}
Спасибо за помощь.
Он посещает каждый узел ровно один раз, поэтому O (n) кажется правильным. –
@ 500-InternalServerError ok Я думаю, что получаю это сейчас. благодаря –