226. 翻转二叉树2
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
1 public class InvertBinaryTree {
2 static class TreeNode {
3 int val;
4 TreeNode left;
5 TreeNode right;
6 TreeNode(int x) {
7 val = x;
8 }
9 }
10 //方式一:到叶子节点就返回
11 public TreeNode invertTree1(TreeNode root) {
12 if(root == null || (root.left == null && root.right == null)) {
13 return root;
14 }
15 TreeNode leftNode = invertTree1(root.left); //找到左结点
16 TreeNode rightNode = invertTree1(root.right); //找到右结点
17 root.left = rightNode; //交换节点
18 root.right = leftNode;
19 return root;
20 }
21 //方式二:直到null才返回
22 public TreeNode invertTree2(TreeNode root) {
23 if(root == null) {
24 return null;
25 }
26 TreeNode leftNode = root.left;
27 root.left = invertTree2(root.right);
28 root.right = invertTree2(leftNode);
29 return root;
30 }
31 }