226.翻转二叉树

翻转一棵二叉树。

示例:

输入:

1
2
3
4
5
     4
/ \
2 7
/ \ / \
1 3 6 9

输出:

1
2
3
4
5
     4
/ \
7 2
/ \ / \
9 6 3 1

Solution

采用递归的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
// 该方法接收一个二叉树的根节点,并返回翻转后的树的根节点。
public TreeNode invertTree(TreeNode root) {
// 如果当前节点为空,返回null,表示这一分支没有需要处理的节点。
if (root == null) {
return null;
}

// 临时保存右子节点,以便在交换后可以将其赋给左子节点。
TreeNode temp = root.right;
// 交换左右子节点。
root.right = root.left;
root.left = temp;

// 递归地翻转当前节点的左子树。
invertTree(root.left);
// 递归地翻转当前节点的右子树。
invertTree(root.right);

// 返回处理后的节点,这里是翻转后的树的根节点。
return root;
}
}