以下是一个不使用递归的方法来镜像二叉树的代码示例:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def mirror_tree(root):
if not root:
return None
stack = [root] # 使用栈来存储待处理的节点
while stack:
node = stack.pop()
# 交换节点的左右子树
node.left, node.right = node.right, node.left
# 将左右子树非空的节点入栈
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return root
使用一个栈来存储待处理的节点。在循环中,弹出栈顶的节点,交换其左右子树,然后将左右子树非空的节点入栈。重复这个过程直到栈为空。最后返回根节点即可。
这种方法使用了额外的空间来存储节点的引用,空间复杂度为O(n),其中n是二叉树中的节点个数。时间复杂度为O(n),因为每个节点都需要处理一次。