如何解决解释此python TREE算法用于查找高度的运行时间
在下面,我附上了一段代码。各位,请告诉我们以下代码的运行时间 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 表示树中的节点数,我们可以观察到以下内容:
c in self.children(p)
永远不会产生相同的 c 两次:除了根节点之外,所有节点在某个时候都是 c ,并且只有一次。因此,此代码表示每个节点的时间复杂度 。而且,_height2
将为所有节点恰好调用一次。对于根,这是初始调用,对于其他所有节点,这是递归调用。
所有其他代码(除了对子代的迭代和递归调用外)表示每个节点的时间复杂度 。
所以我们有 O(n)时间复杂度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。