Read-only web browser

Solutions

Browse the interview solutions folder with syntax highlighting.

invert-binary-tree.py

trees/invert-binary-tree.py · Python · 889 B · 2026-02-03 08:56

Back to folder
# 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