📅  最后修改于: 2023-12-03 14:57:58.179000             🧑  作者: Mango
前序遍历是二叉树遍历方式之一,它的访问顺序是先访问根节点,再依次遍历左右子树。迭代前序遍历是在不使用递归的情况下完成前序遍历。
def preorder_traversal_iteratively(root):
if root is None:
return []
stack, result = [root], []
while stack:
node = stack.pop()
result.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return result
迭代前序遍历的时间复杂度为$O(n)$,其中n为二叉树的节点数量。
迭代前序遍历使用了一个栈,所以空间复杂度为$O(h)$,其中h为二叉树的高度。在最坏情况下,二叉树可能是一个类似链表一样的结构,此时h=n,空间复杂度为$O(n)$。