大家好 我需要一些关于计算函数高度的时间复杂度的方向,该函数高度使用函数深度来获得树的高度。
所以函数是这样的:
height(Tree)
height h = 0;
for(each external node of T)
h = max(height, getdepth(external node));
这个算法最糟糕的情况是,每个节点处于同一级别? 在这种情况下,我们最终为所有外部节点做同样的事情,因为所有节点都将具有相同的高度 - n *(n-some_i)= n ^ 2? 但是这样思考 - 当树木向左或向右不平衡时, 复杂性将再次是1 + 2 + 3 + 4 ... + n = n ^ 2?
我有点困惑。这是正确的思考方式吗?
由于
答案 0 :(得分:1)
最好从根开始并对树进行递归遍历,跟踪当前深度和最大深度。这样你只需要遍历树一次。如果单独计算每个节点的深度,最终会遍历树N次,其中N是外部节点的数量。