涉及树遍历的递归方法的时间复杂度

时间:2014-09-08 11:14:04

标签: performance recursion time

我正试图弄清楚我自己的方法的时间复杂度的计算 - 任何人都可以向计算一个方法的方向推动我,这个方法涉及对每个涉及递归调用的方法吗?

我编写了一个对一棵树进行树遍历的方法。不幸的是,我无法发布确切的代码,但它是:给定根节点以

开头
for each (child of node)
   does a quick check
   sets a boolean
   does a recursive call on itself until we go to the lead nodes

1 个答案:

答案 0 :(得分:0)

您的循环完全一次访问树的每个节点。

从根节点开始,您将访问其所有子节点,对于它们,您在根子节点的每个子节点上调用相同的函数并重复相同的操作。

由于您假定O(n)是常量并且不依赖n,因此您的树的quick check个节点的运行时间为n时,您完全访问每个节点或做任何超过O(n)的事情。


" 为每个部分完成n次":

是和否:对于单个节点,for each部分已完成numberOfChildsOfNode(Node node)但由于您通过递归调用函数为每个子节点执行 这实际上是n次。

您可以测试/尝试的内容:声明static变量executionCount或者像这样,将其初始化为0并在循环中递增它。您应该看到executionCount等于节点数。