invert-binary-tree.py
trees/invert-binary-tree.py · Python · 889 B · 2026-02-03 08:56
# Recursive DFS (inverting left and right first), or iterative DFS (queue, popleft) # trees class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right # DFS, recursive: O(n) time, O(n) space def invert_tree(root: TreeNode) -> TreeNode: if not root: return None root.left, root.right = root.right, root.left invert_tree(root.right) invert_tree(root.left) return root from collections import deque # BFS, iterative: O(n) time, O(n) space def invert_tree(root: TreeNode) -> TreeNode: if not root: return None q = deque([root]) while q: node = q.popleft() node.left, node.right = node.right, node.left if node.left: q.append(node.left) if node.right: q.append(node.right) return root