在THIS geeksforgeeks链接中,他们将递归级别顺序遍历的时间复杂度描述为O(n^2)
。
时间复杂度:最差情况下为O(n^2)
。对于倾斜的树,printGivenLevel()
需要O(n)
次,其中n是倾斜树中的节点数。因此,printLevelOrder()
的时间复杂度为O(n) + O(n-1) + O(n-2) + .. + O(1)
O(n^2)
。这对我来说并不清楚。
有人可以帮我理解。
答案 0 :(得分:2)
对于这样的偏斜树:
1
\
2
\
...
\
N
此树的深度为N,因此以下函数将从1运行到N,
printLevelorder(tree)
for d = 1 to height(tree)
printGivenLevel(tree, d);
即,
printGivenLevel(tree, 1);
printGivenLevel(tree, 2);
...
printGivenLevel(tree, N);
printGivenLevel(tree, depth)
每次从根开始都需要O(深度)时间。
时间复杂度是:
O(1) + O(2) + ... + O(N) = O(N^2)
答案 1 :(得分:1)