## Challenge Statement

- Given the
`root`

of a binary tree, invert the tree, and return*its root*. - This challenge corresponds to LeetCode #226.

### Constraints

- The number of nodes in the tree is in the range
`[0, 100]`

. `-100 <= Node.val <= 100`

**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: []
```

## Solution

Below is my solution and some test cases. This solution has a **linear time complexity O(n) and a constant space complexity O(1)**, where n is the size of the tree*.*