我有一个数据结构是一棵树,其中每个父级可以有无限数量的子级,树的最大深度是 4。每个级别都是一个不同的类。
我的朋友写了一个算法来遍历这个由 for 循环组成的,伪代码如下:
root = tree.root();
for (int i = 0; i < root.children_size(); i++)
child1 = root.child(i);
for(int j = 0; j < child1.children_size(); j++)
child2 = child1.child(j);
for(int k = 0; k < child2.children_size(); k++)
child3 = child2.child(k);
他声称因为它有 3 个 for 循环,所以该算法的运行时间是 O(n3)。当我问他 n 是什么时,他说是 for 循环的数量,这没有意义,因为 n 必须是这棵树中的一个结构。我声称 n 是树中总节点的数量,该算法的运行时间为 O(n),因为运行时间将为 O(root.children_size + child1.children_size + child2.children_size)。
我对运行时间的假设是正确的,O(n),还是我的朋友,O(n^3)?