226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1:

1
2
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

1
2
输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

1
2
输入:root = []
输出:[]

提示:

  • 树中节点数目范围在 [0, 100]
  • -100 <= Node.val <= 100

题解:

只要把每个节点的左右孩子都翻转一次就可以达到整体反转的效果。

二叉树的题目递归时一定要注意采用哪一种遍历方式。

本题采用前序遍历或者后序遍历都可以,但是中序遍历不可以,可以手动模拟一下。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public TreeNode invertTree(TreeNode root) {
//递归出口
if(root == null){
return null;
}
//采用后序遍历
invertTree(root.left);//左
invertTree(root.right);//右

//中
swapTree(root);
return root;
}
private void swapTree(TreeNode root){
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
}