--- title: '226. Invert Binary Tree' description: Given the root of a binary tree, invert the tree, and return its root icon: dot sidebar: label: 'Invert Binary Tree' badge: 'Easy' --- Tree ### Example 1: - Input: `root = [4,2,7,1,3,6,9]` - Output: `[4,7,2,9,6,3,1]` ### Example 2: - Input: `root = [2,1,3]` - Output: `[2,3,1]` ### Example 3: - Input: `root = []` - Output: `[]` ### Constraints: - The number of nodes in the tree is in the range [0, 100]. - `-100 <= Node.val <= 100` ## Approach ```mermaid flowchart TD S(["invertTree(root)"]) --> B{"root is None?"} B -- yes --> Z(["return None"]) B -- no --> L["left = invertTree(root.left), right = invertTree(root.right) — both subtrees are already inverted"] L --> X["root.left = right, root.right = left"] X --> E(["return root"]) ``` ## Solution ```py # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: if not root: return None left = self.invertTree(root.left) right = self.invertTree(root.right) root.left = right root.right = left return root ``` ## Explanation