【发布时间】:2017-12-08 02:57:52
【问题描述】:
对于在给定此结构的情况下将二叉树展平的简单算法:
class Tree(object):
def __init__(self, x):
self.value = x
self.left = None
self.right = None
这个将二叉树展平成数组的算法的运行时间是多少?
def flatten(root):
if root == None:
return []
return flatten(root.left) + [root.value] + flatten(root.right)
我认为这是N 时间,2N 空间复杂度,因为算法是从根开始,然后到左右节点。
我认为这是 2N 空间复杂度,因为您仍然拥有树占用的 N 空间和结果数组中的 N 空间。
我是否以正确的方式思考这个问题?
【问题讨论】:
-
顺便说一句
O(2N)与O(N)相同。空间复杂度通常只是衡量工作存储(不是您的起始和结束数据结构),它只是假设平衡树空间复杂度为O(log N)(最坏情况@987654330)的树深度的调用堆栈@)。
标签: algorithm python-3.x tree