[toc]
# Leetcode 226. 翻转二叉树
## 问题描述
[226. 翻转二叉树 - 力扣(LeetCode)](https://leetcode-cn.com/problems/invert-binary-tree/)
## 算法
只需要遍历每个结点,交换其左右结点即可。使用 preorder、inorder、postorder、levelorder均可
### 解法1: preorder dfs
#### 解法1: 实现:递归
##### 解法1: 实现:python
```
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
def process(node):
if not node: return
node.left, node.right = node.right, node.left
def preorder(node, process):
if not node: return
process(node)
preorder(node.right, process)
preorder(node.left, process)
preorder(root, process)
return root
```
#### 解法1: 实现2: 非递归
##### 解法1: 实现2: python
```
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
node = root
stack = []
while stack or node:
while node:
# preorder processing
node.left, node.right = node.right, node.left
stack.ap