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

Performance 涉及树遍历的递归方法的时间复杂度,performance,recursion,time,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 循环只访问树的每

我正试图了解我自己的方法的时间复杂度的计算——有人能告诉我计算一个方法的方向吗?这个方法涉及对自身的递归调用

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

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

循环只访问树的每个节点一次

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

由于您只访问每个节点一次,因此此循环对树的
n
节点的运行时间为
O(n)
,假设
quick check
是常量,不依赖于
n
或执行任何超过
O(n)


“是否对每个零件进行了n次测试”:


是和否:对于单个节点,每个部分的
已完成
numberOfChildsOfNode(Node Node)
,但由于通过递归调用函数为每个子节点执行该操作,因此执行该操作的次数实际上是
n次


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

您为每个子节点执行此操作,因此此循环为每个子节点的每个子节点运行。。您正在访问
n
nodes.“自身递归调用”-是否还有其他类型?这就是递归的定义。我感到困惑的是,(逐行分析操作),是每个部分都做了n次,还是我做递归调用的部分?@user3603183似乎你在理解递归在做什么时遇到了困难。我会尽力在回答中解释的谢谢你的澄清!总的来说,我知道它已经做了n次了,因为我不得不逐行分析用这种方法所做的工作,我有点困惑。最后,我将for-each和递归调用集在一起,得到n次