我正试图弄清楚我自己的方法的时间复杂度的计算 - 任何人都可以向计算一个方法的方向推动我,这个方法涉及对每个涉及递归调用的方法吗?
我编写了一个对一棵树进行树遍历的方法。不幸的是,我无法发布确切的代码,但它是:给定根节点以
开头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
答案 0 :(得分:0)
您的循环完全一次访问树的每个节点。
从根节点开始,您将访问其所有子节点,对于它们,您在根子节点的每个子节点上调用相同的函数并重复相同的操作。
由于您假定O(n)
是常量并且不依赖n
,因此您的树的quick check
个节点的运行时间为n
时,您完全访问每个节点或做任何超过O(n)
的事情。
" 为每个部分完成n次":
是和否:对于单个节点,for each
部分已完成numberOfChildsOfNode(Node node)
但由于您通过递归调用函数为每个子节点执行 这实际上是n
次。
您可以测试/尝试的内容:声明static
变量executionCount
或者像这样,将其初始化为0
并在循环中递增它。您应该看到executionCount
等于节点数。