thiagowfx's avatar

Β¬ just serendipity πŸ€ (not just serendipity)

ByteByteGo: Invert Binary Tree

β€’ 146 words β€’ 1 min β€’ updated

ByteByteGo: Invert Binary Tree:

python
from ds import TreeNode

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
"""

def invert_binary_tree(root: TreeNode) -> TreeNode:
    if root is None:
        return None

    root.left, root.right = root.right, root.left

    invert_binary_tree(root.left)
    invert_binary_tree(root.right)

    return root

The following DOES NOT work:

python
from ds import TreeNode

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
"""

def invert_binary_tree(root: TreeNode) -> TreeNode:
    if root is None:
        return None

    root.left = invert_binary_tree(root.right)
    root.right = invert_binary_tree(root.left)

    return root

The swap must happen simultaneously. The following works:

python
from ds import TreeNode

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None
"""

def invert_binary_tree(root: TreeNode) -> TreeNode:
    if root is None:
        return None

    root.left, root.right = invert_binary_tree(root.right), invert_binary_tree(root.left)

    return root