【问题标题】:Explain running time on this python TREE algorithm for finding heights解释这个用于查找高度的 python 树算法的运行时间
【发布时间】:2020-09-14 17:48:44
【问题描述】:

下面我附上了一段代码。请各位大侠说说下面的代码是如何有O(n)时间运行时间的。

def _height2(self, p):
     if self.is_leaf(p):
          return 0
     else:
          return 1 + max(self._height2(c) for c in self.children(p))

我无法理解它在 O(n) 时间复杂度下的工作原理。 请帮助我学习。

【问题讨论】:

  • 如果涉及到一些记忆,那就是命令 n。
  • 兄弟,我们尝试访问每个节点一次,在最坏的情况下,我们尝试从根节点访问高度,因此我们得到 n 个节点的 O(n) 时间复杂度

标签: python python-3.x data-structures tree


【解决方案1】:

假设n代表树中的节点数,我们可以观察到:

c in self.children(p) 永远不会产生相同的 c 两次:除根以外的所有节点在某个时候都将是那个 c,而且只有一次。所以这段代码代表了一个恒定的时间复杂度每个节点。此外,_height2 将只为所有节点调用一次。对于根节点,这是初始调用,对于所有其他节点,这是递归调用。

所有其他代码(除了对子节点的迭代和递归调用)表示每个节点的恒定时间复杂度。

所以我们有 O(n) 的时间复杂度。

【讨论】:

  • 非常感谢先生,我理解了这背后的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2017-03-22
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
相关资源
最近更新 更多