Problem Description
Given the root
of a binary tree, invert the tree, and return its root
.
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]
My Idea
My idea here was to use recursion and DFS. If the root
has no children return root
, else swap the left and the right children and invert them.
My solution
from typing import Optional
# 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
# Time Complexity: O(n)
def invertTree(root: Optional[TreeNode]) -> Optional[TreeNode]:
if not root:
return None
if not root.left and not root.right:
return root
temp = root.left
root.left = invertTree(root.right)
root.right = invertTree(temp)
return root