级别顺序遍历的复杂性

时间:2015-04-27 18:24:33

标签: big-o complexity-theory

打印特定级别的功能

void printLevelOrder(struct node* root)
{
   int h = height(root);
   int i;
   for(i=1; i<=h; i++)
      printGivenLevel(root, i);
}

打印所有级别订单遍历的功能

printLevelOrder()

这里我想计算函数O(n²)的复杂性。 我所指的资源表示它在2ⁿ中运行。我无法弄清楚如何 因为如果我应用主的减法定理来计算方法1的复杂性,那么T(n)=2⋅T(n-1)$(".loadMore").off("click").on("click",loadMoreClicked(this.id));

如果我在某处接近错误,请纠正我。

1 个答案:

答案 0 :(得分:0)

假设我们有一个带有n个节点的偏斜树。类似的东西:

1 \ 2 \ 3 \ 4 . . n

现在这棵树有n级。对于每个级别i,您调用printGivenLevel(i),它会遍历从级别1到级别i的所有节点,最后在级别i上打印节点。

因此,对于级别n,您需要花费n时间查看cn个节点。 对于级别n - 1,您需要花费n - 1时间查看c(n - 1)个节点 等等。

总时间= c(n + (n - 1) + (n - 2) + .... + 3 + 2 + 1)cn 2 = O(n 2 {{ 1}}